Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 67
Эндрю Троелсен
с.ProtectedInternalMethod();
с.PrivateMethod(); // Ошибка!
с.ProtectedMethod(); //Ошибка!
с.SomeMethod(); // Ошибка!
}
Если скомпилировать эту программу, вы обнаружите, что защищенные и частные члены вне объекта
Исходный код. Проект MemberAccess размещен в подкаталоге, соответствующем главе 3.
Доступность типов
Типы (классы, интерфейсы, структуры, перечни и делегаты) также могут использовать модификаторы доступности, но только public или internal. Когда вы создаете общедоступный тип (public), то гарантируете, что он будет доступным для других типов как в текущем компоновочном блоке, так и во внешних компоновочных блоках. Это может оказаться полезным только тогда, когда вы создаете библиотеку программного кода (см. главу 11), но здесь мы можем привести пример использования этого модификатора доступности,
// Этот тип может использоваться любым компоновочным блоком.
public class MyClass()
Внутренний (internal) тип, с другой стороны, может использоваться только компоновочным блоком, в котором этот тип определен. Если создать библиотеку программного кода .NET, в которой будут определены внутренние типы, то компоновочные блоки, ссылающиеся на эту библиотеку (файл *.dll), не смогут увидеть эти типы, создать их экземпляры или как-то иначе взаимодействовать с ними.
Характеристикой доступности, принимаемой по умолчанию для типов в C#, является internal, поэтому если вы не укажете явно ключевое слово public, то в результате будет создан внутренний тип.
// Эти классы могут использоваться только внутри
// текущего компоновочного блока.
internal class MyHelperClass{}
class FinalHelperClass{} //По умолчанию тип будет внутренним.
Замечание. В главе 4 будет говориться о вложенных типах. Вы узнаете, что вложенные типы тоже могут быть объявлены, как приватные.
Значения, назначаемые переменным по умолчанию
Членам-переменным классов автоматически присваиваются подходящие значения, предусмотренные по умолчанию. Эти значения для каждого типа данных, свои, но правила их выбора достаточно просты:
• для типа bool устанавливается значение false;
• числовым данным присваивается значение 0 (или 0.0, если это данные с плавающим разделителем);
• для типа string устанавливается значение null;
• для типа char устанавливается значение '\0';
• для ссылочных типов устанавливается значение null.
С учетом этих правил проанализируйте следующий программный код.
// Поля типа класса получают значения по умолчанию.
class Test {
public int myInt; // Устанавливается равным 0.
public string myString; // Устанавливается равным null.
public bool myBool; // Устанавливается равным false.
public object myObj; // Устанавливается равным null.
}
Значения, назначаемые по умолчанию, и локальные переменные
Совсем по-другому обстоит дело тогда, когда объявляются локальные переменные, видимые в пределах данного члена. При определении локальной переменной вы