类中的类,实例化为单个对象

fri*_*gle 2 c#

我试图让逻辑分隔符保持我的所有属性在逻辑上分开,但所以我只需要传递一个对象.我所说的是,我想实例化Object,并能够使用Object.InnerObject.InnerObjectsProperty.这是我正在测试的代码,试图弄清楚如何执行此操作:

   namespace SubclassTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            int x;
            Console.WriteLine("type a number");
            x = Convert.ToInt32(Console.ReadLine());

            OuterClass TestClass = new OuterClass();

            TestClass.OuterNumber = x;
            TestClass.InnerClass.InnerNumber = x;
            Console.WriteLine("success!");
            Console.ReadKey();

        }
    }

    class OuterClass
    {
        public OuterClass()
        {
            _InnerClass InnerClass = new _InnerClass();
        }

        public int OuterNumber { get; set; }

        public class _InnerClass
        {
            public int InnerNumber { get; set; }
        }

        public _InnerClass InnerClass { get; set; }

    }

}
Run Code Online (Sandbox Code Playgroud)

此代码在TestClass.InnerClass.InnerNumber = x上失败; with NullReferenceException - 未将对象引用设置为对象的实例.

看起来,构造函数什么都不做,并且它无论是否有效都无法工作.

这甚至可能吗?我想实例化单个OuterClass对象,并让所有包含的对象实例化,并可通过OuterClass对象访问.这样我只需要在方法中传递单个对象,但可以保持内部工作在逻辑上彼此分离.

Bro*_*ass 6

public OuterClass()
{
    _InnerClass InnerClass = new _InnerClass();
}
Run Code Online (Sandbox Code Playgroud)

您正在InnerClass构造函数中创建一个局部变量- 这对您没有帮助 - 您需要该属性:

InnerClass = new _InnerClass();
Run Code Online (Sandbox Code Playgroud)

我对整个方法提出质疑.一般来说,我没有看到嵌套类在这里买到什么,一般来说我会尽量避免使用它们,因为它们增加了复杂性.