1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 36
Текст из файла (страница 36)
Объектно-основанное программировании/// < / s u m m a r y >publicstringsFirstName;/// <summary>/// Фамилия с т у д е н т а/// < / s u m m a r y >publicstringsLastName;// I n i t S t u d e n t/// <summary>/// И н и ц и а л и з а ц и я с т у д е н т а п е р е д е г о и с п о л ь з о в а н и е м ./// < / s u m m a r y >/// < p a r a m n a m e = " s F i r s t N a m e " > И м я с т у д е н т а < / р а г а т >/// < p a r a m n a m e = " s L a s t N a m e " > Ф а м и л и я с т у д е н т а < / р а г а т >public v o i dI n i t S t u d e n t ( s t r i n gsFirstName,stringsLastName){'this.sFirstName = sFirstName;this.sLastName = sLastName;// O u t p u t B a n n e r/// <summary>//////Вывод з а г о л о в к а</summary>publics t a t i cvoidпередвыводоминформацииостудентеOutputBanner(){Console.WriteLine("Никакиххитростей:");// Console.WriteLine(? какой объект используется?);}// O u t p u t B a n n e r A n d N a m e/// < s u m m a r y >/// Вывод з а г о л о в к а с п о с л е д у ю щ и м/// < / s u m m a r y >publicvoidвыводомименистудентаOutputBannerAndName(){// Используется класс S t u d e n t ,но// не передаются никакие объектыOutputBanner();статическомуметоду// Явная п е р е д а ч а о б ъ е к т аOutputName(this,5);// O u t p u t N a m e/// < s u m m a r y >/// Выводит и м я с т у д е н т а н а к о н с о л ь/// < / s u m m a r y >/// < p a r a m n a m e = " s t u d e n t " > С т у д е н т ,имя к о т о р о г о должно///бытьвыведено</рагат>/// < p a r a m n a m e = " n I n d e n t " > K ^ H 4 e c T B O п р о б е л о в в///отступе</рагат>/// < r e t u r n s > B b m e f l e H H a f lcTpoKa</returns>public s t a t i cstring OutputName(Studentstudent,intnlndent){•// Здесь объект указан явноs t r i n g s = new S t r i n g ( '',nlndent);s += S t r i n g .
F o r m a t ( " И м я с т у д е н т а {О}",student.ToNameString());Console.WriteLine(s);returns;}//ToNameString///<summary>//////Преобразует</summary>///<returns>CTpoKypublicstringимястудентасименемвстрокудлявыводастудента</returns>ToNameString(){//////retЗ д е с ь текущий о б ъ е к т у к а з а н н е я в н о ; можноиспользоватьt h i s :return this.sFirstName + "" + this.sLastName;u r n sFirstName + " " + sLastName;}}//////<summary>Класс,///использующийклассStudent</summary>publicclassProgram{//////<summary>Стартовая///</summary>///<paramточкаname= "args///publicпрограммы.11>Аргументыкоманднойстроки</рагат>s t a t i cvoidMain(string []args){S t u d e n t s t u d e n t = new S t u d e n t ( ) ;student.InitStudent("Madeleine","Cather");// Вывод з а г о л о в к а и имениStudent.OutputBanner();string s = Student.OutputName(student,Console.WriteLine();// Вывод з а г о л о в к а и и м е н и ещеstudent.OutputBannerAndName();раз/ / Ожидаем п о д т в е р ж д е н и я п о л ь з о в а т е л яConsole.WriteLine("Нажмите <Enter> для"завершения5);"+программы...");Console.Read();}}}К о м м е н т а р и и н е п о с р е д с т в е н н о п р е д ш е с т в у ю т о п и с ы в а е м о й и м и ф у н к ц и и .
О н и поясн я ю т п р е д н а з н а ч е н и е ее и к а ж д о г о из ее а р г у м е н т о в , т и п в о з в р а щ а е м ы х д а н н ы х и ссыл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 Name(), Visual Studioвыводит краткоеописаниеиз раздела<summary></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.
Теперь выберите команду меню B u i l d : Rebuild Solution для полной сборпроекта, независимо от того, требуется она или нет.5. Просмотрите подкаталог b i n \ D e b u g проекта M i x i n g F u n c t i o n s A n d M e to d s W i t h X M L T a g s (или другой подкаталог, который был указан вами дXML-документации).В этом подкаталоге должен находиться файл с указанным вами в п.
2 именав котором содержится описание всех функций, документированных посредствомXML-дескрипторов.198Часть III. Объектно-основанное программированаГлава 9Работа со строками в С#В этой главе...> Основные операции со строками} Разбор считанной строки•> Форматирование выводимых строкмногих приложениях можно рассматривать тип s t r i n g как один из встроенных типов-значений наподобие i n t или c h a r . К строкам применимы некоторые из операций, зарезервированных для встроенных типов, например:int i = 1;string s ="abc";/ / Объявление и и н и ц и а л и з а ц и я/ / Объявление и и н и ц и а л и з а ц и яi n tstringС другой стороны, как видно из приведенного далее фрагмента, строки можно рассматривать как пользовательский класс:string si = new S t r i n g ( ) ;string s2 = " 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 представляет собой синоним имени классаS t r i n g , как видно из следующего фрагмента исходного текста:String si = " a b e d " ; ////string s2 = s i ;////Присваиваниестроковоголитералаобъекту класса S t r i n gПрисваивание объекта к л а с с а 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 sName = " R a n d y " ;C o n s o l e . W r i t e L i n e ( " Е г о имя-"+sName);//КонкатенацияЭтот специальный оператор обеспечивается классом S t r i n g .
Однако класс S t r i n gпредоставляет и другие методы для работы со строками. Их полный список можно найтив разделе " S t r i n gc l a s s " предметного указателя справочной системы.Объединение неразделимо!Вам нужно запомнить одну до сих пор неизвестную вам вещь: после того как объектs t r i n g создан, изменить его нельзя.