ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Таблица 3.4. Ключевые слова C#, указывающие уровень доступности
Модификатор доступности C# | Описание |
---|---|
public (открытый, общедоступный) | Помечает метод, как доступный из объектной переменной, а также из всех производных классов |
private (частный, приватный) | Помечает метод, как доступный только из класса, определяющего этот метод. В C# любой член по умолчанию определяется, как private |
protected (защищенный) | Помечает
|
internal (внутренний) | Определяет метод, как доступный для любого типа только внутри данного компоновочного блока, но не снаружи |
protected internal (внутренний защищенный) | Определяет метод, доступ к которому ограничивается рамками текущего компоновочного блока или типами, созданными из определяющего класса в данном компоновочном блоке |
Защищенные члены оказываются полезными только при создании иерархии классов, что будет темой обсуждения главы 4. Что касается внутренних, и защищённых членов, то они обычно используются при создании библиотек программного кода .NET (например, управляемых библиотек *.dll, что будет обсуждаться в главе 11).
Чтобы проиллюстрировать применение указанных ключевых слов, создадим класс (SomeClass), в котором используются все указанные модификаторы доступности членов.
Теперь, создав экземпляр класса SomeClass, попытаемся вызвать каждый из его методов, используя операцию, обозначаемую точкой.
Если скомпилировать эту программу, вы обнаружите, что защищенные и частные члены вне объекта не доступны.
Исходный код. Проект MemberAccess
размещен в подкаталоге, соответствующем главе 3.Доступность типов
Типы (классы, интерфейсы, структуры, перечни и делегаты) также могут использовать модификаторы доступности, но только public или internal. Когда вы создаете общедоступный тип (public), то гарантируете, что он будет доступным для других типов как в текущем компоновочном блоке, так и во внешних компоновочных блоках. Это может оказаться полезным только тогда, когда вы создаете библиотеку программного кода (см. главу 11), но здесь мы можем привести пример использования этого модификатора доступности,
Внутренний (internal) тип, с другой стороны, может использоваться только компоновочным блоком, в котором этот тип определен. Если создать библиотеку программного кода .NET, в которой будут определены внутренние типы, то компоновочные блоки, ссылающиеся на эту библиотеку (файл *.dll), не смогут увидеть эти типы, создать их экземпляры или как-то иначе взаимодействовать с ними.
Характеристикой доступности, принимаемой по умолчанию для типов в C#, является internal, поэтому если вы не укажете явно ключевое слово public, то в результате будет создан внутренний тип.
Замечание. В главе 4 будет говориться о вложенных типах. Вы узнаете, что вложенные типы тоже могут быть объявлены, как приватные.
Значения, назначаемые переменным по умолчанию
Членам-переменным классов автоматически присваиваются подходящие значения, предусмотренные по умолчанию. Эти значения для каждого типа данных, свои, но правила их выбора достаточно просты:
• для типа bool устанавливается значение false;
• числовым данным присваивается значение 0 (или 0.0, если это данные с плавающим разделителем);
• для типа string устанавливается значение null;
• для типа char устанавливается значение '\0';
• для ссылочных типов устанавливается значение null.
С учетом этих правил проанализируйте следующий программный код.
// Поля типа класса получают значения по умолчанию.
Значения, назначаемые по умолчанию, и локальные переменные
Совсем по-другому обстоит дело тогда, когда объявляются локальные переменные, видимые в пределах данного члена. При определении локальной переменной вы должны назначить ей начальное значение, прежде чем начать ее использование, поскольку такая перемен наяне не получает начального значения по умолчанию. Например, следующий программный код приведет к ошибке компиляции,