(这个问题是C# 访问派生类中受保护成员的后续问题)
我有以下代码片段:
public class Fox
{
protected string FurColor;
private string furType;
public void PaintFox(Fox anotherFox)
{
anotherFox.FurColor = "Hey!";
anotherFox.furType = "Hey!";
}
}
public class RedFox : Fox
{
public void IncorrectPaintFox(Fox anotherFox)
{
// This one is inaccessible here and results in a compilation error.
anotherFox.FurColor = "Hey!";
}
public void CorrectPaintFox(RedFox anotherFox)
{
// This is perfectly valid.
anotherFox.FurColor = "Hey!";
}
}
我们也知道访问修饰符应该在编译时起作用。
所以,问题来了——为什么我不能访问类实例的
FurColor
字段?Fox
RedFox
RedFox
派生自Fox
,因此编译器知道它可以访问相应的受保护字段。此外,正如您在 中看到的,我可以访问类实例
CorrectPaintFox
的受保护字段。那么,为什么我不能对类实例有同样的期望呢?RedFox
Fox