Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

Значения спецификаторов для свойств и методов аналогичны. Чаще всего свойства объявляются со спецификатором public. Код доступа представляет собой блоки операторов, которые выполняются при получении (get) или установке (set) свойства. Может отсутствовать либо часть get, либо set, но не обе одновременно.

Свойства

Свойства служат для организации доступа к полям класса. Как правило, свойство связано с закрытым полем класса и определяет методы его получения и установки. Синтаксис свойства:

[ атрибуты ] [ спецификаторы ] тип имя_свойства{ [ get код_доступа ] [ set код_доступа ]}

Если отсутствует часть set, свойство доступно только для чтения (read-only), если отсутствует часть get, свойство доступно только для записи (write-only). В версии C# 2.0 введена возможность задавать разный уровень доступа для частей get и set.

Пример описания свойств:

public class Button: Control { private string caption; // закрытое поле, с которым связано свойство public string Caption { // свойство get { // способ получения свойства return caption; } set { // способ установки свойства if (caption!= value) { caption = value; } } }...}

В программе свойство выглядит как поле класса, например:

Button ok = new Button();ok.Caption = "OK"; // вызывается метод установки свойства string s = ok.Caption; // вызывается метод получения свойства

При обращении к свойству автоматически вызываются указанные в нем методы чтения и установки.

Синтаксически чтение и запись свойства выглядят почти как методы. Метод get должен содержать операторreturn. В методе set используется параметр со стандартным именем value, который содержит устанавливаемое значение.

Добавим в класс Monster, описанный в листинге 5.8, свойства, позволяющие работать с закрытыми полями этого класса. Код класса несколько разрастется, зато упростится его использование.

using System;namespace ConsoleApplication1{ class Monster { public Monster() { this.health = 100; this.ammo = 100; this.name = "Noname"; } public Monster(string name): this() { this.name = name; } public Monster(int health, int ammo, string name) { this.health = health; this.ammo = ammo; this.name = name; } public int Health // свойство Health связано с полем health { get { return health; } set { if (value > 0) health = value; else health = 0; } } public int Ammo // свойство Ammo связано с полем ammo { get { return ammo; } set { if (value > 0) ammo = value; else ammo = 0; } } public string Name // свойство Name связано с полем name { get { return name; } } public void Passport() { Console.WriteLine("Monster {0} \t health = {1} ammo = {2}", name, health, ammo); } string name; // закрытые поля int health, ammo; } class Class1 { static void Main() { Monster Masha = new Monster(200, 200, "Masha"); Masha.Passport(); --Masha.Health; // использование свойств Masha.Ammo += 100; // использование свойств Masha.Passport(); } }}

Листинг 5.9. Класс Monster со свойствами (html, txt)

Результат работы программы:

Monster Masha health = 200 ammo = 200Monster Masha health = 199 ammo = 300

Вопросы и задания для самостоятельной работы студента

  1. Перечислите и опишите элементы класса в C#.
  2. Опишите способы передачи параметров в методы.
  3. Запишите алгоритм вычисления чисел Фибоначчи с помощью рекурсии.
  4. Для чего в классе может потребоваться несколько конструкторов?
  5. Как можно вызвать один конструктор из другого? Зачем это нужно?
  6. Что такое this? Что в нем хранится, как он используется?
  7. Что такое деструктор? Гарантирует ли среда его выполнение?
  8. Какие действия обычно выполняются в части set свойства?
  9. Может ли свойство класса быть не связанным с его полями?
  10. Можно ли описать разные спецификаторы доступа к частям get и set свойства?

 

<== предыдущая лекция | следующая лекция ==>
Статический конструктор не имеет параметров, его нельзя вызвать явным образом. Система сама определяет момент, в который требуется его выполнить | Эписклерит
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 485; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.