Программирование >>  Программирование с использованием ajax 

1 ... 78 79 80 [ 81 ] 82 83 84 ... 396


Console.WriteLine( \nAttempting to assign {0} to myObj.Val... , i);

Попытка присвоить myObj.Val значение

myObj.Val = i;

Console.WriteLine( Value {0} assigned to myObj.Val, myObj.Val); Значение myObj.Val присвоено

catch (Exception e) (

Console.WriteLine( Exception {0} thrown. , e.GetType().FullName);

Сгенерировано исключение Console.WriteLine( Message:\n\ {0}\ , e.Message);

Console.WriteLine( \nOutputting myObj.ToString()... );

Вывод myObj.ToString () ... Console.WriteLine(myObj.ToString()); Console.WriteLine( myObj.ToString() Output. ); Console.ReadKey 0;

5. Запустите приложение. На рис. 10.1 показан результат, который должен получиться.


Рис. 10.1. Приложение Chi О Ex 01 в действии

Описание полученных результатов

в коде внутри Main () создается и используется экземпляр класса MyClass, определенного в файле MyClass . cs. Создание экземпляра этого класса должно осуществляться с использованием конструктора не по умолчанию, потому что конструктор по умолчанию в MyClass является приватным:

private MyClassО : this( Default Name )

Использование this ( Default Name ) гарантирует получение значения полем Name в случае вызова данного конструктора, что возможно при применении этого класса для создания нового производного класса. Это необходимо, поскольку не присваивание значения полю Name может позже стать источником ошибок.

Используемый здесь конструктор не по умолчанию присваивает значения readonly-полю Name (значение которому может присваиваться только либо в объявлении поля, либо в конструкторе) и private-полю intVal.



Далее функция Main() делает две попытки по присваиванию значения свойству Val объекта myObj (являющегося экземпляром класса MyCalss). Цикл for служит в ней для присваивания значений -1 и О (за два прохода), а структура try. . .catch - для выполнения проверки на предмет того, не было ли сгенерировано какое-нибудь исключение. При присваивании свойству значения -1 выдается исключение типа System. ArgumentOutOf RangeException, и код в блоке catch выводит информацию об этом исключении в окне консоли. На следующей итерации цикла свойству Val успешно присваивается значение О, которое далее через это свойство присваивается полю intVal.

Напоследок для вывода отформатированной строки, представляющей содержимое объекта, применяется переопределенный метод ToString ():

public override string ToString() {

return Name: + Name + \nVal: + Val;

Этот метод должен обязательно объявляться с применением ключевого слова override, поскольку он переопределяет виртуальный метод ToString, определенный в базовом классе System.Object. В приведенном здесь коде используется непосредственно свойство Val, а не приватное (private) поле intVal. Не существует причин, по которым свойства не следовало бы использовать в коде внутри классов подобным образом, хотя это и может немного сказываться на производительности (но настолько немного, что это вряд ли удастся заметить). Конечно, применение свойства также обеспечивает выполнение операции проверки на правильность, заложенной в самих свойствах, что тоже может быть очень выгодно для кода внутри класса.

Добавление членов из диаграммы классов

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

Диаграмма классов является средством среды VSue VCE не доступна.

Все инструменты для добавления и редактирования членов отображаются в представлении Class Diagram (Диаграмма классов) внутри окна Class Details (Детали классов). Чтобы убедиться в этом, создайте диаграмму для класса MyClass из приложения ChlOExOl. Чтобы увидеть существующие члены, разверните представление этого класса в конструкторе классов (щелкнув на значке с изображением двух указывающих вниз стрелок). На рис. 10.2 показан внешний вид, который оно должно приобрести после этого.

MyClM

Class

ai Fields

intVal ♦ Name si Propertes

:ff val я1 Methods

MyClass (+ 1 ove ¥ ToString

Puc. 10.2. Представление класса My CI ass в развернутом виде



Тогда при выборе класса MyClass в окне Class Details появится информация, показанная на рис. 10.3.


-ггт

Рис. 10.3. Окно Class Details при выборе класса MyClass

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

Добавление методов

Чтобы добавить в класс новый метод, достаточно просто ввести его имя в ячейке с меткой <add method> (добавить метод). После ввода имени метода с помощью клавиши <ТаЬ> можно перейти к настройке его следующих параметров, начиная с возвращаемого типа, уровня доступности, суммарной информации (которая впоследствии превращается в XML-документацию, о чем более подробно пойдет речь в главе 31), и заканчивая указанием того, должен ли этот метод скрываться в диаграмме классов.

Когда метод уже добавлен, можно развернуть представляющий его узел и аналогичным образом добавить для него другие параметры. Что касается параметров, в их случае еще доступна возможность использовать модификаторы out, ref и params. На рис. 10.4 показан пример добавления нового метода.

public pnvite

Hid*

i partmX . pirtmT

double doublf

None Mont

PublK

3Лй> jacuii I

Puc. 10.4. Добавление нового метода

Вместе с этим новым методом в класс будет добавлен и следующий код:

public double MyMethod(double paramX, double paramY) {

throw new System.NotlmplementedException0;

Остальные параметры метода можно будет настроить уже в окне Properties (Свойства), которое показано на рис. 10.5.



1 ... 78 79 80 [ 81 ] 82 83 84 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика