大家都知道,一個類的私有成員只能在他的內部訪問!
但是不知道大家注意到沒有,實際上在C#中一個類的實例是可以訪問同一個類的另外一個實例的私有成員的。
請看這段簡單的代碼
public class MyClass
{
private int i = 0;
public void Function()
{
MyClass a = new MyClass();
Console.WriteLine( a.i); //這裡成功訪問了另外的一個實例a的私有實例字段
}
}
大家也可以自己寫一段類似的代碼來測試一下,的確是可以訪問另外一個實例的私有成員!
為什麼呢 因為C#就是一開始就是這樣設計的。實際上這個設計在某種程度上破壞了對象的封裝性,其他的面向對象的語言可能就沒有做這樣的設計了。
希望大家可以注意到這個問題,為了保證對象良好的封裝性,最好不要這樣訪問啊!