protected (odwołanie w C#)
Słowo protected
kluczowe jest modyfikatorem dostępu do składowych.
Uwaga
Ta strona obejmuje protected
dostęp. Słowo protected
kluczowe jest również częścią protected internal
modyfikatorów dostępu i private protected
.
Chroniony element członkowski jest dostępny w swojej klasie i przez wystąpienia klasy pochodnej.
Aby zapoznać się z protected
porównaniem z innymi modyfikatorami dostępu, zobacz Poziomy ułatwień dostępu.
Przykład 1
Chroniony element członkowski klasy bazowej jest dostępny w klasie pochodnej tylko wtedy, gdy dostęp występuje za pośrednictwem typu klasy pochodnej. Rozważmy na przykład następujący segment kodu:
class A
{
protected int x = 123;
}
class B : A
{
static void Main()
{
var a = new A();
var 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
Instrukcja generuje błąd, ponieważ jest on tworzony w metodzie statycznej Main, a nie w wystąpieniu klasy B.
Nie można chronić składowych struktury, ponieważ nie można dziedziczyć struktury.
Przykład 2
W tym przykładzie klasa DerivedPoint
pochodzi z Point
klasy . W związku z tym można uzyskać dostęp do chronionych składowych klasy bazowej bezpośrednio z klasy pochodnej.
class Point
{
protected int x;
protected int y;
}
class DerivedPoint: Point
{
static void Main()
{
var dpoint = new DerivedPoint();
// Direct access to protected members.
dpoint.x = 10;
dpoint.y = 15;
Console.WriteLine($"x = {dpoint.x}, y = {dpoint.y}");
}
}
// Output: x = 10, y = 15
Jeśli zmienisz poziomy dostępu i x
y
na prywatny, kompilator wyświetli komunikaty o błędach:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Zadeklarowane ułatwienia dostępu w specyfikacji języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.