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


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

Ключевое слово 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#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

Ссылки

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

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

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

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

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

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

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

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

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

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

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