請參閱下面的代碼:爲什麼其他類的私有變量可以在.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