请参阅下面的代码:为什么其他类的私有变量可以在.Equals中覆盖?
public class TestClass
{
private int TestVariable;
public override bool Equals(object obj)
{
TestClass testClass = obj as TestClass;
return TestVariable == testClass.TestVariable;
}
}
这怎么行编译:
return TestVariable == testClass.TestVariable;
TestVariable
是私有的,被外部访问。如果我行更改为这则不会编译因为我希望:
return TestVariable == obj.TestVariable;
但是 - 当你调用obj.TestVariable时,它会失败,因为它的私有性和有效性你是外在的 - 你不是使用“this”,而是你所在类的新版本无法看到..我有一个大脑(显然),你也可以问我脑中有什么,我可以告诉你,但你不能自己阅读,而你可以阅读你自己的,但我们都来自模板人(我希望) – BugFinder
私人意味着(来自docs):“类型或成员只能由同一类或结构中的代码访问”。你的代码在同一个类中,所以它可以访问它。 – Evk
我不知道C#,但它看起来不像是从另一个类访问的。看起来像在拥有它的类中访问的私有变量,这是完全正确的。 – Carcigenicate