Класс - это шаблон, который определяет форму объекта. Класс должен определять только одну логическую сущность.
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, ошибка компиляции не генерируется |
Любой тип .NET строится на основе базового типа (наследует) object. Это означает, что: