Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
The protected
keyword is a member access modifier.
Note
This page covers protected
access. The protected
keyword is also part of the protected internal
and private protected
access modifiers.
A protected member is accessible within its class and by derived class instances.
For a comparison of protected
with the other access modifiers, see Accessibility Levels.
Example 1
A protected member of a base class is accessible in a derived class only if the access occurs through the derived class type. For example, consider the following code segment:
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 through
// the derived class type, not through the base class type.
// a.x = 10;
// OK, because this class derives from A.
b.x = 10;
}
}
The statement a.x = 10
generates an error because it accesses the protected member through a base class reference (a
is of type A
). Protected members can only be accessed through the derived class type or types derived from it.
Struct members cannot be protected because the struct cannot be inherited.
Example 2
In this example, the class DerivedPoint
is derived from Point
. Therefore, you can access the protected members of the base class directly from the derived class.
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
If you change the access levels of x
and y
to private, the compiler will issue the error messages:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
C# language specification
For more information, see Declared accessibility in the C# Language Specification. The language specification is the definitive source for C# syntax and usage.