ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.12.2025

Просмотров: 3230

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Двойной щелчок на файле в окне Solution Explorer приводит к открытию окна дм его редактирования (если редактирование файла возможно). Файл P r o g r a m , cs содер­ жит трамплин программы на С# — функцию M a i n ( ) . Конечно, большинство програш в этой книге написаны непосредственно в одном этом файле. В предыдущих версия Visual Studio файл P r o g r a m , cs назывался C l a s s l . c s , что заставляло всякий раз его переименовывать. P r o g r a m , с s — вполне приличное название, в переименовании не нуждающееся.

В больших проектах файлы могут быть размещены в большем количестве подка­ талогов. Щелкните правой кнопкой мыши в окне Solution Explorer и выберите в меню команду A d d ^ N e w Folder. Перетащите файлы во вновь созданную пап­ ку. Visual Studio сам разберется, что к чему, и где лежат нужные файлы.

Вы можете редактировать файл A s s e m b l y l n f о. c s , снабжая вашу программу такими свойствами, как ее название и название компании, торговая марка и номер версии. Не стоит тратить время на эти свойства, следует только сказать, что это все­ го лишь простой текстовый файл. Эти свойства появляются на вкладке Version in­ formation ( В е р с и я ) окна свойств . ЕХЕ-файла, открывающегося при щелчке правой кнопкой мыши на файле в Проводнике Windows и выборе из раскрывающегося ме­

ню команды Properties.

Вы можете добавить в проект файлы любого вида. Обычно я храню здесь электрон­ ную таблицу или текстовый файл для собственных примечаний. Щелкните правой кноп­ кой мыши на проекте в окне Solution Explorer и выберите команду меню Add^Existing Item. Выберите добавляемый файл.

Свойства проекта

Щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer и выберите команду Properties, чтобы открыть диалоговое окно свойств про­ екта. Здесь можно обновить ряд настроек проекта. Многие категории в окне Properties имеют имена, которые вполне проясняют их предназначение, но вы всегда можете обратиться к справочному материалу: поищите раздел "project properties" в справочной системе. Одна из наиболее полезных вкладок окна Properties — вкладка Settings. Определите ваши собственные настройки: только для чтения — Application и для чтения и записи — User — и вы сможе­ те обратиться к ним из своей программы следующим образом:

/ / Э т у с т р о к у н а д о д о б а в и т ь в р а з д е л u s i n g u s i n g M y A p p N a m e . P r o p e r t i e s , -

/ /

. . . з а т е м г д е у г о д н о в в а ш е й п р о г р а м м е н а п и ш и т е ч т о - т о

/ /

в р о д е :

/ / д л я п о л у ч е н и я s t r i n g m y S t r i n g

з н а ч е н и я н а с т р о й к и т о л ь к о д л я ч т е н и я :

=S e t t i n g s . D e f a u l t . M y A p p S e t t i n g ;

/ / д л я у с т а н о в к и з н а ч е н и я н а с т р о й к и д л я ч т е н и я S e t t i n g s . D e f a u l t . M y U s e r S e t t i n g = m y U s e r S t r i n g ; / / Д о с т у п к р е с у р с а м о с у щ е с т в л я е т с я п р а к т и ч е с к и

из а п и с и :

т а к ж е

Таким образом, оказывается очень просто сохранить пользовательские настройки без необходимости управления ими самостоятельно с помощью классов S y s t e m . 10, опи­ санных в главе 19, "Работа с файлами и библиотеками". В завершенной программе, ко-

496

Часть VII. Дополнительные главы


торую вы распространяете, пользовательские настройки хранятся в персональных облас­ тях Application Data каждого пользователя. (Эта папка является частью персонального профиля каждого пользователя и обычно хранится в папке С: \ D o c u m e n t s a n d S e t - tings\< u s e r n a m e > . ) Чтобы сохранить измененные настройки, вызовите в вашей про­ грамме S e t t i n g s . D e f a u l t . S a v e () (например, в конце функции M a i n () или когда вы закрываете Windows Form) . Сохраненные настройки загружаются автоматически при новом запуске приложения.

Навигация по исходному тексту

В больших программах достаточно трудно переходить от работы над методом

Акласса В к работе над методом С класса D. Вы можете найти определенный класс или метод путем открытия файла для редактирования и просмотра его содержимого или воспользоваться возможностью Class View, что значительно быстрее — особенно в больших проектах.

ВSolution Explorer вы должны дважды щелкнуть на файле для того, чтобы открыть его, а затем прокрутить его или воспользоваться средствами поиска для того, чтобы най­ ти искомый метод. Вы можете также применить два раскрывающихся списка поверх ка­ ждого окна редактора для поиска класса и его методов в текущем файле. Левый раскры­ вающийся список содержит классы текущего файла, а правый — члены выбранного класса. Я часто пользуюсь этими списками, но все же лично мне больше нравится ис­

пользовать Class View.

Class View рассматривает программу не как множество файлов, а как множество классов и их членов, что позволяет данному средству быть незаменимым помощником при навигации по проекту. Щелкните на классе в верхней панели для того, чтобы уви­ деть список его членов (с сигнатурами параметров) в нижней панели. Это очень полез­ но — иметь возможность быстро вспомнить об аргументах и типе возвращаемого значе­ ния метода. Вернитесь к рис. 21.7, на котором показан результат двойного щелчка на классе U n i v e r s i t y в окне Class V i e w открыт соответствующий исходный файл; двойной щелчок на методе E n r o l l () показывает этот член в открытом исходном фай­ ле. (Посредством правого щелчка на классе в окне Class View отображается раскры­ вающееся меню с некоторыми интересными возможностями.)

Держите окна Solution Explorer и Class View в закрепленном наложенном со­

стоянии, чтобы быстро переключаться между ними с помощью одного щелчка на вкладке.

Добавление класса

Размещать каждый класс в отдельном файле, да еще так, чтобы имя файла совпадало с именем класса — хорошая программистская привычка. Подклассы могут находиться либо в своих собственных файлах, либо в файле базового класса, в зависимости от того, насколько тесно они связаны друг с другом.

Классы S c h o o l и S t u d e n t определенно следует разместить в разных файлах. Точно так же нужно разделить классы H i g h S c h o o l , U n i v e r s i t y и S c h o o l , поскольку кон­ цептуально они достаточно далеки друг от друга. Вместе в одном файле лучше размес­ тить классы наподобие L e s s e r C a n a d i a n G o o s e и G r e a t e r C a n a d i a n G o o s e .

Глава 21. Использование интерфейса Visual Studio

497


Рис. 21.9. Добавление нового класса в проект с использованием окна

Add New Item

Для того чтобы добавить класс U n i v e r s i t y в программу V S I n t e r f а с е , выполни­ те следующие шаги.

1. Щелкните правой кнопкой мыши на имени проекта V S I n t e r f а с е в окне

Solution Explorer, а затем выберите команду меню Add Add New Item.

В появившемся окне вам будет предложена масса шаблонов объектов на выбор. Их слишком много, чтобы поместиться на одном рисунке!

2.Выберите Class, введите University. cs в поле Name в нижней части ок­ на и затем щелкните на кнопке Open.

На рис. 21.9 показано окно Add New Item с выбранным шаблоном Class.

Содержимое нового исходного файла U n i v e r s i t y . cs выглядит очень похоже на содержимое файла P r o g r a m , c s , который строится по умолчанию при созда­ нии новой программы.

3.Повторите процесс для класса Student. После этого проект будет содер­ жать файлы Student.cs и University.cs наряду с Program.cs.

Вернитесь к рис. 21.8, на котором показан результат выполнения указанных ша­ гов. Три исходных файла представлены вкладками в окне редактирования.

Завершение демонстрационной программы

Данная версия класса S t u d e n t создает и выводит, информацию о студенте, состоящую из идентификатора и имени.

/ / V S I n t e r f а с е - ф а й л S t u d e n t . c s

/ /

S t u d e n t

- м о д е л и р о в а н и е с т у д е н т а , к о т о р ы й в с о с т о я н и и с а м

/ /

н а п и с а т ь

с в о е и м я

u s i n g

S y s t e m ;

n a m e s p a c e

V S I n t e r f a c e

498


/ / /

< s u m m a r y >

 

 

 

 

 

 

 

/ / / S t u d e n t - у ч а щ и й с я ш к о л ы

 

 

 

 

/ / /

< / s u m m a r y >

 

 

 

 

 

 

 

p u b l i c c l a s s S t u d e n t

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

p r i v a t e

s t r i n g s S t u d e n t N a m e ;

 

 

 

 

p r i v a t e

i n t

n I D ;

 

 

 

 

 

p u b l i c

S t u d e n t ( s t r i n g

s S t u d e n t N a m e ,

i n t

n I D )

 

{

 

 

 

 

 

 

 

 

 

t h i s . s S t u d e n t N a m e = s S t u d e n t N a m e ;

 

 

 

t h i s . n I D = n I D ;

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

/ / /

< s u m m a r y >

 

 

 

 

 

 

/ / / N a m e - и м я у ч а щ е г о с я

 

 

 

 

/ / /

< / s u m m a r y >

 

 

 

 

 

 

p u b l i c

s t r i n g N a m e { g e t { r e t u r n s S t u d e n t N a m e ; } }

 

/ / /

< s u m m a r y >

 

 

 

 

 

 

/ / / T o S t r i n g -

в о з в р а щ а е т и м я и и д е н т и ф и к а т о р

 

/ / /

< / s u m m a r y >

 

 

 

 

 

 

p u b l i c

o v e r r i d e

s t r i n g

T o S t r i n g ( )

 

 

 

{

 

 

 

 

 

 

 

 

 

r e t u r n S t r i n g . F o r m a t ( " { 0 }

( { l } ) " ,

s S t u d e n t N a m e ,

n I D ) ;

}

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

Конструктор класса S t u d e n t получает имя и идентификатор студента. Метод

 

T o S t r i n g ()

перекрывает

версию

базового

класса

по умолчанию

O b j e c t .

 

Эта пользовательская версия возвращает имя студента и его идентификатор в

 

скобках. В главе 18, "Эти исключительные исключения", более подробно рас­

 

сказано о перекрытии T o S t r i n g ( ) .

 

 

 

 

Класс S t u d e n t включает комментарии документирования, помеченные как / / / . Та­ кое документирование делает код более понятным, в особенности если классы распреде­ лены по нескольким файлам, и может оказаться полезным для других программистов (да даже и для самого автора исходного текста через некоторое время). Об использовании таких документирующих комментариев и генерации справочных файлов для ваших про­ грамм уже рассказывалось в главе 8, "Методы класса".

Вы можете перекомпилировать вашу программу даже до того, как введете исходный текст файла S t u d e n t . cs — после того, как введете исходный текст файлов U n i v e r s i t y . cs и P r o g r a m , c s . Это неплохая и д е я — инкрементная разработка программ. Перекомпилируйте и исправляйте вашу программу до тех пор, пока компилятор не перестанет выводить сообщения об ошибках или предупреждения. Поступайте так для каждого класса или даже метода, пока не избавитесь от всех ошибок при компиляции.

Исходный текст файла U n i v e r s i t y . cs столь же прост, как и его предше­ ственник:

/ /

V S I n t e r f а с е

- ф а й л U n i v e r s i t y . c s

 

/ /

U n i v e r s i t y -

п р о с т е й ш и й к о н т е й н е р д л я с т у д е н т о в

Глава 21. Использование интерфейса Visual Studio

499


u s i n g

S y s t e m ;

 

u s i n g

S y s t e m . C o l l e c t i o n s ;

n a m e s p a c e

V S I n t e r f a c e

{

 

 

 

/ / / < s u m m a r y >

 

/ / / U n i v e r s i t y -

у ч е б н о е з а в е д е н и е

/ / /

< / s u m m a r y >

 

p u b l i c c l a s s U n i v e r s i t y

{

 

 

 

p r i v a t e

s t r i n g

s N a m e ;

p r i v a t e

S o r t e d L i s t s t u d e n t s ; / / С л о в а р ь

p u b l i c

U n i v e r s i t y ( s t r i n g s N a r a e )

{

t h i s . s N a m e = s N a m e ;

s t u d e n t s = n e w S o r t e d L i s t ( ) ;

}

/ / / < s u m m a r y >

/ / /

E n r o l l - д о б а в и т ь с т у д е н т а в у н и в е р с и т е т

/ / /

< / s u m m a r y >

p u b l i c

v o i d

E n r o l l ( S t u d e n t

s t u d e n t )

{

 

 

 

s t u d e n t s . A d d ( s t u d e n t . N a m e ,

s t u d e n t ) ;

}

 

 

 

p u b l i c

o v e r r i d e s t r i n g T o S t r i n g O

{

 

 

 

s t r i n g s =

sNarae + " \ n " ;

 

s + = " С п и с о к с т у д е н т о в : " + " \ n " ;

/ / И т е р а ц и я п о в с е м с т у д е н т а м у н и в е р с и т е т а с / / и с п о л ь з о в а н и е м о б ы ч н о г о п е р е ч и с л и т е л я

I E n u m e r a t o r i t e r = s t u d e n t s . G e t E n u m e r a t o r О ; w h i l e ( i t e r . M o v e N e x t ( ) )

{

 

o b j e c t о = i t e r . C u r r e n t ;

 

 

 

 

 

 

/ / С л е д у ю щ и й п о д х о д н е р а б о т а е т , п о т о м у ч т о и т е р а т о р

 

/ / д л я S o r t e d L i s t в о з в р а щ а е т з а п и с и с л о в а р я ,

к о т о р ы е

 

/ / в к л ю ч а ю т к а к с т у д е н т а ,

т а к и к л ю ч :

 

 

 

/ /

 

 

 

 

 

 

 

 

 

 

/ / S t u d e n t s t u d e n t =

( S t u d e n t ) о ;

 

 

 

 

/ / / / Р а б о т о с п о с о б е н с л е д у ю щ и й в а р и а н т :

 

 

 

/ / ( о б р а т и т е в н и м а н и е н а п р е о б р а з о в а н и е т и п о в )

 

D i c t i o n a r y E n t r y d e =

( D i c t i o n a r y E n t r y ) о,-

 

 

 

S t u d e n t s t u d e n t =

( S t u d e n t ) d e . V a l u e ;

 

 

 

 

s + = s t u d e n t . T o S t r i n g ( )

+ " \ n " ;

 

 

 

}

 

 

 

 

 

 

 

 

 

 

r e t u r n

S ;

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

Д а н н ы й

файл

указывает, что его содержимое является

частью

пространства имен

V S I n t e r f a c e . Класс

U n i v e r s i t y

состоит

не

более чем из

имени

и

отсортированной

коллекции

студентов.

Метод E n r o l l ( )

добавляет объекты

типа S t u d e n t в S o r t e d ­

L i s t с использованием имени студента в качестве ключа сортировки — другими слова­ ми, студенты хранятся в списке в отсортированном порядке.

500

Часть VII. Дополнительные главы