C#

Книги | Ссылки
Начало | Классы | Методы | Свойства | Интерфейсы | Делегаты
Лямбда-выражения | Отражение

C# Классы


Класс - это шаблон, который определяет форму объекта. Класс должен определять только одну логическую сущность.

class Person
{
  . . .
}

Объявление class - это только описание типа, оно не создает реальных объектов. Чтобы реально создать объект класса нужно использовать следующую конструкцию с использованием ключевого слова new:

Person P = new Person();

Класс является ссылочным типом, т.е. переменная P будет содержать не объект, а ссылку на этот объект.

Оператор "точка" (.) связывает имя объекта с именем его члена. В общем случае оператор "точка" м можно использовать для доступа к переменным экземпляров и методам.

Доступность членов

Ключевые слова C#, указывающие уровень доступности - классификаторы доступности :

Классификатор доступности C# Описание
public Помечает метод, как доступный из объектной переменной, а также из всех производных классов
private Помечает метод, как доступный только из класса, определяющего этот метод. В C# любой член по умолчанию определяется, как private
protected Помечает метод, как доступный для определяющего класса, а так же для любого производного класса. Однако защищенные методы не доступны из объектной переменной
internal Определяет метод, как доступный для любого типа только внутри данного компоновочного блока, но не снаружи
protected internal Определяет метод, доступ к которому ограничивается рамками текущего компоновочного блока или типами, созданными из определяющего класса в данном компоновочном блоке

Классификатор доступности необязателен и если он не указан, то по умолчанию подразумевается, что член закрыт (private) в рамках класса, где он определен.

Наследуемый класс не может иметь более открытый классификатор доступности, чем его предок.

В C# структуры не поддерживают наследования. Поэтому спецификатор доступа protected в объявлении данных — членов и функций — членов структур не применяется.

Переопределение членов базового класса

При объявлении членов производного класса в C# разрешено использовать те же самые имена, которые применялись при объявлении членов базового класса. Это касается как методов, так и данных — членов объявляемых классов. В этом случае соответствующие члены базового класса считаются переопределенными.

Доступность типов

Типы (классы, интерфейсы, структуры, перечни и делегаты) могут использовать классификаторы доступности, но только public или internal. Public гарантирует, что тип будет доступен для других типов как в текущем компоновочном блоке, так и во внешних компоновочных блоках. Internal (внутренний) тип может использоваться только компоновочным блоком, в котором этот тип определен. По умолчанию для типов используется доступность internal.

Модификаторы параметров методов

Модификаторы параметров методов контролируют способ передачи (и, возможно, возврата) аргументов для данного метода.

Модификатор параметров Описание
(нет) Если параметр не помечен модификатором, то предполагается передача параметра по значению, т.е. вызываемый метод получит копию оригинальных данных
out Выходные параметры устанавливаются вызываемым методом (и, таким образом, передаются по ссылке). Если вызываемый метод не назначит выходные параметры, генерируется ошибка компиляции
params Позволяет переслать произвольное число аргументов одинакового типа в виде единого параметра. Для любого метода допускается только один модификатор params и только для последнего параметра
ref Соответствующее значение задается вызывающей стороной, но вызываемый метод может это значение изменить (поскольку данные передаются по ссылке). Если вызываемый метод не присвоит значение параметру ref, ошибка компиляции не генерируется

Boxing и Unboxing. Приведение к типу object

Любой тип .NET строится на основе базового типа (наследует) object. Это означает, что:


Главная | С# | WPF | Silverlight | Покер | Фотография | Разное
© Андрей Семёнов, 2009
Hosted by uCoz