C#嵌套的类型的定义

今天看书看到一个很好玩的,是嵌套的类。

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的值

原文地址:https://www.cnblogs.com/Vincente/p/6909098.html