Объявление класса
В языке С# определение класса не обязательно должно иметь методы конструктор и деструктор.
Управляемый код на языке С# избавлен от необходимости освобождения памяти, выделяемой под объекты, так как это реализуется средой NET Framework. Поэтому основное назначение деструктора в языке C# - это освобождение неуправляемых ресурсов, таких как окна, файлы, сетевые соединения и т.п.
Язык C# поддерживает три типа конструкторов:
- конструктор экземпляра объекта ( instance), используемый при создании объекта;
- private-конструктор, указываемый в коде для предотвращения автоматического создания конструктора по умолчанию. Такой тип конструктора используется для классов, имеющих только статические члены. Экземпляр объекта с private-конструктором не может быть создан.
- статический конструктор ( static), вызываемый для инициализации класса до создания первого объекта или до первого вызова статического метода. Статический конструктор не может иметь модификаторы доступа и список параметров.
Конструктор экземпляра объекта имеет следующее формальное описание:
[атрибуты] [модификаторы_доступа] имя_конструктора([список_формальных_параметров]) [:base (список_аргументов) | :this (список_аргументов)] { тело_конструктора }
Ключевое слово base определяет явный вызов конструктора базового класса, а ключевое слово this - вызов конструктора данного класса с указанным списком параметров.
Например:
public class AClass1 { public AClass1()// Объявление конструктора { } }
Ключевое слово class определяет имя объявляемого класса. Тело объявляемого класса указывается в фигурных скобках.
Ключевое слово public - это модификатор доступа, указывающий, что объявляемые после него идентификаторы (имена классов или методов) будут общедоступны (модификатор доступа позволяет определить область видимости переменных и методов - членов класса).
По умолчанию все переменные и методы - члены класса, заданные без модификатора доступа, считаются private-переменными (называемыми иногда приватными или закрытыми). Приватные переменные доступны только внутри экземпляра класса и не могут быть использованы во внешних функциях модуля.