Поделиться через


protected (справочник по C#)

Обновлен: Ноябрь 2007

Ключевое слово protected является модификатором доступа к члену. Доступ к члену с модификатором protected возможен внутри класса и из производных экземпляров класса. Для сравнения ключевого слова protected с другими модификаторами доступа см. раздел Уровни доступности.

Пример

Член базового класса с модификатором protected доступен в производном классе только в том случае, если доступ осуществляется через тип производного класса. В качестве примера рассмотрим следующий фрагмент кода:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        A a = new A();
        B b = new B();

        // Error CS1540, because x can only be accessed by
        // classes derived from A.
        // a.x = 10; 

        // OK, because this class derives from A.
        b.x = 10;
    }
}

Оператор a.x = 10 генерирует ошибку, поскольку он произведен внутри статического метода Main, а не внутри экземпляра класса B.

Элементы структур не могут использоваться с модификатором protected, потому что наследование от структуры невозможно.

В этом примере класс DerivedPoint является производным от класса Point. Следовательно, доступ к членам базового класса с модификатором protected можно осуществлять непосредственно из производного класса.

class Point 
{
    protected int x; 
    protected int y;
}

class DerivedPoint: Point 
{
    static void Main() 
    {
        DerivedPoint dpoint = new DerivedPoint();

        // Direct access to protected members:
        dpoint.x = 10;
        dpoint.y = 15;
        Console.WriteLine("x = {0}, y = {1}", dpoint.x, dpoint.y); 
    }
}
// Output: x = 10, y = 15

Если изменить уровень доступа к переменным x и y на private, то компилятор выдаст следующие сообщения об ошибке:

'Point.y' is inaccessible due to its protection level.

'Point.x' is inaccessible due to its protection level.

Спецификация языка C#

Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:

  • 3.5.1 Объявленная доступность

  • 3.5.3 Защищенный доступ к членам экземпляра

  • 3.5.4 Ограничения доступности

  • 10.3.5 Модификаторы доступа

См. также

Основные понятия

Руководство по программированию в C#

Ссылки

Ключевые слова C#

Модификаторы доступа (Справочник по C#)

Уровни доступности (Справочник по C#)

Модификаторы (Справочник по C#)

public (справочник по C#)

private (Справочник по C#)

internal (Справочник по C#)

Другие ресурсы

Справочник по C#