我试图让逻辑分隔符保持我的所有属性在逻辑上分开,但所以我只需要传递一个对象.我所说的是,我想实例化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对象访问.这样我只需要在方法中传递单个对象,但可以保持内部工作在逻辑上彼此分离.
public OuterClass()
{
_InnerClass InnerClass = new _InnerClass();
}
Run Code Online (Sandbox Code Playgroud)
您正在InnerClass构造函数中创建一个局部变量- 这对您没有帮助 - 您需要该属性:
InnerClass = new _InnerClass();
Run Code Online (Sandbox Code Playgroud)
我对整个方法提出质疑.一般来说,我没有看到嵌套类在这里买到什么,一般来说我会尽量避免使用它们,因为它们增加了复杂性.