我试图让逻辑分隔符保持我的所有属性在逻辑上是分开的,但所以我只需要传递单个对象。我说的是,我想实例化对象,并能够使用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; }
}
}
此代码对TestClass.InnerClass.InnerNumber失败= X;带有NullReferenceException - 对象引用未设置为对象的实例。
该构造函数看起来并没有做什么,它无法使用和不使用。
这甚至可能吗?我想实例化单个OuterClass对象,并让所有包含的对象实例化,并可通过OuterClass对象访问。这样我只需要向方法传入一个对象,但可以保持内部逻辑上相互独立的工作。
+1注意到不必要的内部类--OP可能没有意识到,您不需要将该类定义为内部类来获得该类型的成员变量。 – 2012-02-28 22:15:14
是的,我意识到嵌套类不是一个好习惯,但在我正在开发的实际应用中,它们似乎很有意义。它为IT售票系统增加了一项功能。外部类包含有关票据请求的所有信息,而内部类包含有关相关用户的信息(用户名,电子邮件,电话等)。我将所有独特的信息保留在外部类中,而不是将30个成员塞进外部类,并使用多个内部用户对象。然后,我可以将单个对象传递给我的方法,并返回单个对象。 – friggle 2012-02-29 13:21:47
为什么不把相关的类实例公开为外部类的属性呢?无需使用内部类来实现相同的使用组合。 – BrokenGlass 2012-02-29 13:24:25