我有以下代码
class TopClass
{
public string ClsProp1 { get; set; }
public string ClsProp2 { get; set; }
public SubClass ClsProp3 { get; set; }
}
class SubClass
{
public string SCProp1 { get; set; }
public string SCProp2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
Test.TopClass TCN = new Test.TopClass();
TCN.ClsProp1 = "TCProp1--string value";
TCN.ClsProp2 = "TCProp2--string value";
TCN.ClsProp3.SCProp1 = "SCProp1--string value";
TCN.ClsProp3.SCProp2 = "SCProp2--string value";
}
}
我似乎无法弄清楚如何实例化TCN.ClsProp3.ScProp1和TCN.ClsProp3.ScProp2值。我一直得到“Test.exe中发生的类型'System.NullReferenceException'的未处理异常 附加信息:对象引用未设置为对象的实例。“错误消息。原谅我的无知,我真的想从头学习OOP。
提前致谢
答案 0 :(得分:8)
您需要初始化ClsProp3
对象才能使用它。
TCN.ClsProp3 = new SubClass();
你也可以在TopClass
构造函数中初始化它,如下所示:
class TopClass
{
public TopClass()
{
ClsProp3 = new SubClass();
}
public string ClsProp1 { get; set; }
public string ClsProp2 { get; set; }
public SubClass ClsProp3 { get; set; }
}
答案 1 :(得分:0)
学习时,最好选择一个好的域名。 TopClass
与ClsPropX
ClsProp3
不能带来良好的学习体验。
关于您的原始问题,启动调试器并查看null
等于的内容。请记住,不可能将任何内容分配给“虚无”,这在C#用语中是{{1}}。