Основы C#: часть III…

Март 11, 2007

Свойства

Свойства позволяют не только скрывать классам реализацию методов, но и запрещать членам любой прямой доступ к полям класса. Для обеспечения корректной
работы с полями класса в С# введено такое понятие, как свойство метода. Свойство выполняет работу по получению и установке значений полей, действуя согласно прописанным требованиям. Свойство на С# состоит из объявления поля и методов-аксесоров, применяемых для изменения значения поля. Эти методы-аксессоры называются получатель (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}

комментариев 5 to “Основы C#: часть III…”

  1. valker Says:

    Во-первых, свойства — это не тип данных, как написано в первом предложении. Во-вторых, пример с датами не демонстрирует никаких преимуществ свойств. В-третьих, забыт модификатор «protected internal». В-четвёртых, intenal модификатор открывает доступ для всех классов в текущей сборке (а не «единице компиляции» — кстати, что это такое?). В-пятых, не указано, что модификаторы доступа могут применяться не только к полям и методам, но и к классам. В-шестых, если уж мешать все модификаторы в одну кучу, то нужно отметить ещё: abstract, const, extern, override, static, virtual и volatile.
    Имхо, если уж делать такой учебник, то нужно, во-первых, быть точнее, во-вторых, — полнее, а в-третьих, — писать один пост про одно явление (а тут смесь свойств с модификаторами).

  2. seregaborzov Says:

    по-первому: согласен — лох, просто копирнул у Лабора, впредь буду перепроверять. По-второму: чтобы объяснить преимущества, надо писать отдельную статью с действительно качественными примерами, а это было просто знакомство.С модификаторами действительно надо было остановиться на 4 основных, а не лезть дальше. По поводу учебника: я не стараюсь писать учебник с примерами, это просто основы, первое знакомство, beginner’s guide. Учебники уже все написаны Троелсеном и Петцольдом, и смысла делать велосипеда я не вижу…
    пост уже переделан
    спасибо за разнос и респект за то, что читаешь — буду повышать качество контента и примеров обязательно


  3. […] встретил Новый год и наехал по полной на МС. Затем были основы CSharp и еще обязательно будут =). Еще одним поппостом стал […]


  4. […] Паттерны проектирова 1,461 Дух ИKEA… 1,421 Учим UML… 1,395 Основы C#: часть III… 1,310 Вирусный маркетинг от 1,275 Автоцентр Планета… 1,268 […]


Comments are closed.