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

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

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

Добавлен: 11.12.2025

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

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

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

{•

/ / З д е с ь о б ъ е к т у к а з а н я в н о

s t r i n g s = n e w S t r i n g ( ' ' , n l n d e n t ) ;

s + = S t r i n g . F o r m a t ( " И м я с т у д е н т а - { О } " ,

s t u d e n t . T o N a m e S t r i n g ( ) ) ; C o n s o l e . W r i t e L i n e ( s ) ;

r e t u r n s ;

}

// T o N a m e S t r i n g

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

/ / / П р е о б р а з у е т и м я с т у д е н т а в с т р о к у д л я в ы в о д а

/ / /

< / s u m m a r y >

/ / /

< r e t u r n s > C T p o K y с и м е н е м с т у д е н т а < / r e t u r n s >

p u b l i c s t r i n g T o N a m e S t r i n g ( )

{

/ / З д е с ь т е к у щ и й о б ъ е к т у к а з а н н е я в н о ; м о ж н о / / и с п о л ь з о в а т ь t h i s :

/ / r e t u r n t h i s . s F i r s t N a m e + " " + t h i s . s L a s t N a m e ; r e t u r n s F i r s t N a m e + " " + s L a s t N a m e ;

}

}

/ / / < 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 P r o g r a m

{

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

/ / / С т а р т о в а я т о ч к а п р о г р а м м ы .

/ / /

< / s u m m a r y >

/ / /

< p a r a m n a m e = " a r g s 1 1 > А р г у м е н т ы к о м а н д н о й

/ / /

с т р о к и < / р а г а т >

p u b l i c

s t a t i c v o i d M a i n ( s t r i n g [ ]

a r g s )

{

S t u d e n t s t u d e n t = n e w S t u d e n t ( ) ;

s t u d e n t . I n i t S t u d e n t ( " M a d e l e i n e " , " C a t h e r " ) ;

/ / В ы в о д з а г о л о в к а и и м е н и S t u d e n t . O u t p u t B a n n e r ( ) ;

s t r i n g s = S t u d e n t . O u t p u t N a m e ( s t u d e n t , 5 ) ; C o n s o l e . W r i t e L i n e ( ) ;

/ / В ы в о д з а г о л о в к а и и м е н и е щ е р а з s t u d e n t . O u t p u t B a n n e r A n d N a m e ( ) ;

/ / О ж и д а е м п о д т в е р ж д е н и я п о л ь з о в а т е л я

C o n s o l e . W r i t e L i n e ( " Н а ж м и т е < E n t e r > д л я " +

" з а в е р ш е н и я п р о г р а м м ы . . . " ) ;

C o n s o l e . R e a d ( ) ;

}

}

}

Комментарии непосредственно предшествуют описываемой ими функции. Они пояс­ няют предназначение ее и каждого из ее аргументов, тип возвращаемых данных и ссыл­

196

Часть III. Объектно-основанное программирование


ки на связанные функции. Вот что происходит на практике при добавлении вызова S t u ­ dent . O u t p u t N a m e () в функцию M a i n ( ) .

1. Visual Studio предлагает список функций. После того как вы выберете O u t p u t - N a me (), Visual Studio выводит краткое описание из раздела < s u m m a r y >

</summsiry>, как показано на рис. 8.6. Текст появляется чуть ниже функции в желтом окне автозавершения.

2. После того как вы выберете функцию или введете ее имя, Visual Studio выводит описание первого параметра, которое получает из раздела < p a r a m x / p a r a m > . Это описание появляется на том же месте, что и предыдущее, замещая собой опи­ сание функции.

3. Затем Visual Studio повторяет процесс для второго аргумента, n l n d e n t .

Рис. 8.6. Visual Studio может описывать пользовательские функции и их аргументы с применением XML

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

Visual Studio можно настроить так, чтобы документирующие комментарии не отображались на экране.

Генерация XML-документации

Можно легко заставить Visual Studio вывести всю документацию в виде XML-файла.

Все, сказанное в данном разделе, — специфическая техническая информация. Если вы не знаете, что такое XML-файл, можно просто пропустить этот раздел, не читая.

Для генерации XML-документации выполните следующие шаги.

1.Выберите команду меню Project^Имя проекта Properties.

2.В разделе Build прокрутите раздел Output и найдите свойство под названи­

ем XML Documentation File. Отметьте соответствующий флаг и введите имя файла.

3. Сохраните и закройте вкладку Properties.

Глава 8. Методы класса

197


К свойствам проекта можно обратиться, щелкнув правой кнопкой мыши

имени проекта в Solution Explorer.

4.Теперь выберите команду меню Build: Rebuild Solution для полной сбор проекта, независимо от того, требуется она или нет.

5.Просмотрите подкаталог bin\Debug проекта MixingFunctionsAndMet odsWithXMLTags (или другой подкаталог, который был указан вами д XML-документации).

В этом подкаталоге должен находиться файл с указанным вами в п. 2 имена в котором содержится описание всех функций, документированных посредством XML-дескрипторов.

198

Часть III. Объектно-основанное программирована


Глава 9

Работа со строками в С#

В этой главе...

> Основные операции со строками

} Разбор считанной строки

> Форматирование выводимых строк

многих приложениях можно рассматривать тип s t r i n g как один из встроен­ ных типов-значений наподобие i n t или c h a r . К строкам применимы некото­ рые из операций, зарезервированных для встроенных типов, например:

int i =

1;

//

Объявление и

инициализация i n t

s t r i n g s

=

" a b c " ;

// Объявление

и инициализация s t r i n g

С другой стороны, как видно из приведенного далее фрагмента, строки можно рас­ сматривать как пользовательский класс:

s t r i n g

s i

= n e w S t r i n g ( ) ;

s t r i n g

s 2

= " a b e d " ;

int n L e n g t h O f S t r i n g = s 2 . L e n g t h ;

Так что же такое s t r i n g — тип-значение или класс? На самом деле S t r i n g — это класс, который в силу его широкой распространенности С# трактует специальным обра­ зом. Например, ключевое слово s t r i n g представляет собой синоним имени класса String, как видно из следующего фрагмента исходного текста:

String

s i

=

" a b e d " ;

/ /

Присваивание

строкового литерала

 

 

 

 

/ /

объекту класса S t r i n g

s t r i n g

s 2

=

s i ;

/ /

Присваивание

объекта класса S t r i n g

//строковой переменной

Вэтом примере переменная si объявлена как объект класса S t r i n g (обратите внима­ ние на прописную S в начале имени), в то время как s2 объявлена как просто s t r i n g (сострочной s в начале имени). Однако эти два присваивания демонстрируют, что s t r i n g

иS t r i n g — это одинаковые (или совместимые) типы.

Вдействительности то же самое справедливо и для других встроенных ти­

пов. Даже тип i n t имеет соответствующий класс I n t 3 2, d o u b l e — класс D o u b l e и т.д.; отличие в том, что s t r i n g и S t r i n g — это действительно одно и то же.


Имеется ряд операций над строками, без которых не обходится практически никакая программа на С#. Например, почти во всех программах используется оператор "сложения" строк, показанный в следующем примере:

s t r i n g s N a m e = " R a n d y " ;

C o n s o l e . W r i t e L i n e ( " Е г о и м я - " + s N a m e ) ; / / К о н к а т е н а ц и я

Этот специальный оператор обеспечивается классом S t r i n g . Однако класс String предоставляет и другие методы для работы со строками. Их полный список можно найти в разделе " S t r i n g c l a s s " предметного указателя справочной системы.

Объединение неразделимо!

Вам нужно запомнить одну до сих пор неизвестную вам вещь: после того как объект s t r i n g создан, изменить его нельзя. Несмотря на то что можно говорить о модифика-1 ции строки, в С# нет операции, модифицирующей реальный объект s t r i n g . Внешне создается впечатление, что масса операторов модифицируют объекты s t r i n g , с кото- рыми работают, но это не так — они всегда возвращают модифицированную строку как новый объект s t r i n g .

Например, операция " Е г о и м я - " + " R a n d y " не изменяет ни одну из объединяемых строк, а генерирует новую строку " Е г о и м я - R a n d y " . Одним из побочных эффектов такого поведения является то, что вы не должны беспокоиться, что кто-то изменит строку без вашего ведома.

Рассмотрим следующую демонстрационную программу:

/ / M o d i f y S t r i n g - м е т о д ы к л а с с а S t r i n g н е м о д и ф и ц и р у ю т с а м

/ / о б ъ е к т

( s . T o U p p e r O

н е и з м е н я е т с т р о к у s ; в м е с т о э т о г о о н

/ / в о з в р а щ а е т н о в у ю п р е о б р а з о в а н н у ю с т р о к у )

u s i n g

S y s t e m ;

 

 

n a m e s p a c e

M o d i f y S t r i n g

 

 

{

 

 

 

 

c l a s s

P r o g r a m

 

 

{

 

 

 

 

p u b l i c

s t a t i c v o i d

M a i n ( s t r i n g [ ]

a r g s )

{

 

 

 

 

/ / С о з д а н и е

S t u d e n t

s i

s l . s N a m e

=

/ / С о з д а е м

S t u d e n t

s 2

s 2 . s N a m e

=

о б ъ е к т а S t u d e n t = n e w S t u d e n t ( ) ;

" J e n n y " ;

н о в ы й о б ъ е к т с т е м ж е и м е н е м = n e w S t u d e n t ( ) ;

s i . s N a m e ;

/ /

" И з м е н е н и е " и м е н и о б ъ е к т а s i

/ /

о б ъ е к т , п о с к о л ь к у T o U p p e r O

н е и з м е н я е т с а м в о з в р а щ а е т н о в у ю

200

Часть III. Объектно-основанное программирована