Основы C#: часть III…
Март 11, 2007 — seregaborzovСвойства
Свойства позволяют не только скрывать классам реализацию методов, но и запрещать членам любой прямой доступ к полям класса. Для обеспечения корректной
работы с полями класса в С# введено такое понятие, как свойство метода. Свойство выполняет работу по получению и установке значений полей, действуя согласно прописанным требованиям. Свойство на С# состоит из объявления поля и методов-аксесоров, применяемых для изменения значения поля. Эти методы-аксессоры называются получатель (getter) и установщик (setter). Методы-получатели используются для получения значения поля, а установщики — для его изменения. Преимущества использования свойств можно уивдеть в следующем коде:
using System; class Date { public int Day{ get { return day; } set { day = value; } } int day; public int Month{ get { return month; } set { month = value; } } int month; public int Year{ get { return year; } set { year = value; } } int year; public bool IsLeapYear(int year) { return year%4== 0 ? true: false; } public void SetDate (int day, int month, int year) { this.day = day; this.month = month; this.year = year; } } Here is the way you will get and set these properties: class User { public static void Main() { Date date = new Date(); date.Day = 27; date.Month = 6; date.Year = 2003; Console.WriteLine ("Date: {0}/{1}/{2}", date.Day, date.Month, date.Year); } }
Модификаторы
Модификаторы доступа (access modifiers) являются, наряду с интерфейсами, отражением инкапсуляции, присущей всем ООП языкам. Инкапсуляция, Леонид - это сокрытие реализации класса и отделение его внутреннего представления от внешнего. Одним слово модификаторы применяются для задания степени доступа, или доступности данного члена для кода, лежащего за пределами его собственного класса. В С# существует несколько модификаторов:
- public = член доступен вне определения класса и иерархии производных классов.
- protected = член невидим за пределами класса, к нему могут обращаться только производные классы.
- private = член недоступен за пределами области видимости определяющего его класса. Поэтому доступа к этим членам нет даже у производных классов.
- internal = член видим только в пределах текущей сборки. Модификатор доступа internal в плане ограничения доступа является гибридом public и protected,зависимым от местоположения кода.
пост обновлен 12.03 в сотрудничестве с valker
char msg[] = {207,240,238,228,238,235,230,229,237,232,229,
32,241,235,229,228,243,229,242}




Март 12, 2007 at 11:33 дп
Во-первых, свойства - это не тип данных, как написано в первом предложении. Во-вторых, пример с датами не демонстрирует никаких преимуществ свойств. В-третьих, забыт модификатор “protected internal”. В-четвёртых, intenal модификатор открывает доступ для всех классов в текущей сборке (а не “единице компиляции” - кстати, что это такое?). В-пятых, не указано, что модификаторы доступа могут применяться не только к полям и методам, но и к классам. В-шестых, если уж мешать все модификаторы в одну кучу, то нужно отметить ещё: abstract, const, extern, override, static, virtual и volatile.
Имхо, если уж делать такой учебник, то нужно, во-первых, быть точнее, во-вторых, - полнее, а в-третьих, - писать один пост про одно явление (а тут смесь свойств с модификаторами).
Март 12, 2007 at 4:44 пп
по-первому: согласен - лох, просто копирнул у Лабора, впредь буду перепроверять. По-второму: чтобы объяснить преимущества, надо писать отдельную статью с действительно качественными примерами, а это было просто знакомство.С модификаторами действительно надо было остановиться на 4 основных, а не лезть дальше. По поводу учебника: я не стараюсь писать учебник с примерами, это просто основы, первое знакомство, beginner’s guide. Учебники уже все написаны Троелсеном и Петцольдом, и смысла делать велосипеда я не вижу…
пост уже переделан
спасибо за разнос и респект за то, что читаешь - буду повышать качество контента и примеров обязательно
Сентябрь 24, 2007 at 1:17 пп
[...] встретил Новый год и наехал по полной на МС. Затем были основы CSharp и еще обязательно будут =). Еще одним поппостом стал [...]