今天看书看到一个很好玩的,是嵌套的类。
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的值