C# 创建顶层时初始化对象的完整图形,以防止为空
如果我想初始化一个包含其他对象的对象,那么最小化代码和防止空引用异常的最佳方法是什么 示例代码(另见:) 此代码将引发空引用异常,因为“Level2Prop”尚未实例化。我意识到我可以在“Level1”类的构造函数中实例化“Level2Prop”(以及在“thr”Level2类的构造函数中实例化“Level3Prop”),但是如果每个孩子都有很多对象属性,并且对象图非常深,那就需要大量的键入C# 创建顶层时初始化对象的完整图形,以防止为空,c#,C#,如果我想初始化一个包含其他对象的对象,那么最小化代码和防止空引用异常的最佳方法是什么 示例代码(另见:) 此代码将引发空引用异常,因为“Level2Prop”尚未实例化。我意识到我可以在“Level1”类的构造函数中实例化“Level2Prop”(以及在“thr”Level2类的构造函数中实例化“Level3Prop”),但是如果每个孩子都有很多对象属性,并且对象图非常深,那就需要大量的键入 有更好的方法吗?通过构造函数使用初始化,并使属性不可变(仅限get)或使用属性初始值设定项。没有“最佳”
有更好的方法吗?通过构造函数使用初始化,并使属性不可变(仅限get)或使用属性初始值设定项。没有“最佳”方法。或者依赖项注入(IoC容器)可能会有所帮助。但这需要一些重构
using System;
public class Program
{
public static void Main()
{
Level1 level1 = new Level1();
level1.Level2Prop.Level3Prop.StringProp = "A value";
Console.WriteLine("Prop has been assigned the value:" + level1.Level2Prop.Level3Prop.StringProp);
}
}
public class Level1
{
public Level2 Level2Prop {get; set;}
}
public class Level2
{
public Level3 Level3Prop {get; set;}
}
public class Level3
{
public string StringProp {get; set;}
}