|
Программирование >> Программирование с использованием ajax
get { return mylnt; set { Код установки значения свойства. Код, находящийся за пределами класса, не сможет получать доступ к данному полю mylnt напрямую из-за того, что уровень доступности последнего указан как private. Вместо этого внешнему коду для получения доступа к этому полю придется использовать свойство. Функция set присваивает значение полю похожим образом. Здесь можно применять ключевое слово value для ссылки на значение, получаемое от пользователя свойства: Поле, используемое свойством, private int mylnt; Свойство. public int MylntProp get { return mylnt; set { mylnt = value; value равно значению того же типа, что и у свойства, так что если в свойстве используется тот же тип, что в поле, беспокоиться о приведении типов не нужно. Это простое свойство делает немного больше, чем просто защищает от прямого доступа к полю mylnt. Реальная мощь свойств проявляется тогда, когда осуществляется немного больше контроля над процессами. Например, блок set мог бы быть реализован и следующим образом: set { if (value > = О && value <= 10) mylnt = value; Эта реализация предусматривает изменение mylnt только в случае присваивания свойству значения в диапазоне между О и 10. В ситуациях, подобных этой, требуется делать важный выбор касательно того, что должно происходить в случае использования недействительного значения. Существует четыре возможных варианта: □ ничего (как и в предыдущем коде); □ полю должно присваиваться значение по умолчанию; а выполнение кода должно продолжаться так, будто ничего страшного не произошло, но с регистрацией события в журнале для последующего анализа причин его возникновения; □ должно генерироваться исключение. В общем случае предпочтительными являются два последних варианта. Выбор того или иного зависит от того, каким образом будет использоваться класс и насколько много контроля должно предоставляться его пользователям. Генерация исключения предоставит пользователям довольно много контроля и позволит знать о том, что происходит, благодаря чему те смогут реагировать соответствующим образом. Применять в качестве такого исключения можно одно из стандартных исключений, которые доступны в пространстве имен System: set { if (value > = О && value <= 10) mylnt = value; else throw (new ArgшIlentOutOfRangeException( MylntProp , value, MylntProp must be assigned a value between 0 and 10. )) ; MylntProp может присваиваться только значение в диапазоне от О до 10 Обработать его можно в коде, использующем свойство, с помощью логики try. . . catch. . . finally, о которой более подробно рассказывалось в главе 7. Регистрация данных, к примеру, в текстовом файле, может оказаться удобным вариантом, скажем, в производственном коде, где проблемы на самом деле не должны возникать. Такой вариант позволит разработчикам проверять показатели производительности и при необходимости даже отлаживать существующий код. В свойствах, как и в методах, могут использоваться ключевые слова virtual, override и abstract, что в случае полей совершенно невозможно. И, наконец, последней особенностью свойств является то, что блоки get и set в них могут иметь свои собственные уровни доступности, как показано ниже: Поле, используемое свойством, private int mylnt; Свойство. public int MylntProp get { return mylnt; protected set mylnt = value; Здесь использовать блок set сможет только код, находящийся либо внутри самого класса, либо внутри его производных классов. То, какие уровни доступности могут применяться для блоков get и set, зависит от уровня доступности самого свойства: делать их доступнее того свойства, к которому они относятся, запрещено. Это означает, что в свойствах с уровнем доступности private не может использоваться вообще никаких модификаторов доступности для их блоков get и set, в то время как в свойствах с уровнем доступности public, наоборот, для блоков get и set могут задаваться все возможные модификаторы. В следующем практическом занятии предоставляется возможность поэкспериментировать с определением и использованием полей, методов и свойств. Практическоеiwwni Использование полей, методов и свойств 1. Создайте новое консольное приложение по имени ChlOExOl и сохраните его в каталоге С:\BegVCSharp\ChapterlO. 2. Добавьте в него новый класс по имени MyClass с помощью ссылки Add Class (Добавить класс), что приведет к определению этого нового класса в отдельном новом файле MyClass . cs. 3. Измените код в этом файле MyClass. cs следующим образом: public class MyClass { public readonly string Name; private int intVal; public int Val { get { return intVal; set if (value > = 0 && value <= 10) intVal = value; else throw (new ArgumentOutOfRangeException( Val , value, Val must be assigned a value between 0 and 10. ) ) ; Val может присваиваться только значение в диапазоне от О до 10 public override string ToString () { return Name: + Name + \nVal: + Val; private MyClass0 : this( Default Name ) public MyClass(string newName) { Name = newName; intVal = 0; 4. Далее измените код в файле Program, cs следующим образом: static void Main(string[] args) { Console.WriteLine( Creating object myObj... ); Создание объекта myObj... MyClass myObj = new MyClass( My Object ); Console.WriteLine( myObj created. ); Объект myObj создан for (int i = -1; i <= 0; 1++) {
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |