今天看書看到一個很好玩的,是嵌套的類。
public class ClassA { private int state = 1; public int State { get { return state; } } public class ClassB { public void SetPrivateState(ClassA target, int newState) { target.state = newState; } } }
在控制台程序中運行
private static void Main(string[] args) { ClassA myObj = new ClassA(); Console.WriteLine("myObj.State={0}", myObj.State); ClassA.ClassB myOtherObj = new ClassA.ClassB(); myOtherObj.SetPrivateState(myObj, 999); Console.WriteLine("myObj.State={0}", myObj.State); Console.ReadKey(); }
輸出結果
通過創建一個ClassA的實例,包含一個只讀屬性State,然后創建了一個嵌套類ClassA.ClassB的一個實例。嵌套類能夠訪問ClassA.State的底層字段State,即使這個字段是一個私有字段。因此,嵌套類的方法SetPrivateState()可以修改ClassA的只讀屬性State的值