在为我正在处理的项目设置一些引用类型属性时,我遇到了一些需要正确初始化才能使用的属性,并且永远不应为null.我已经看到了一些方法来处理这个问题,并且无法确定我看到处理这个问题的主要方法是否存在任何重大缺陷.我想得到社群对处理这个问题的最佳方法的看法,以及每种方法可能存在的缺点.
给定一个简单的类,我已经看到了几种方法来确保属性永远不会在属性中具有此类的null版本
public class MyClass { //Some collection of code }
选项1 - 初始化后备存储
public class OtherClass1 { private MyClass _mC = new MyClass(); public MyClass MC { get { return _mC; } set { _mC = value; } } }
选项2 - 在构造函数中初始化属性
public class OtherClass2 { public MyClass MC { get; set; } public OtherClass2() { MC = new MyClass(); } }
选项3 - 根据需要处理Getter中的初始化
public class OtherClass3 { private MyClass _mC; public MyClass MC { get { if (_mC == null) _mC = new MyClass(); return _mC; } set { _mC = value; } } }
我确信还有其他方法,但这些是我想到的那些想到的.我主要是试图确定是否有一个完善的最佳实践,或者是否有任何上述特定问题.
干杯,
史蒂夫
最好的选择,除非你真的可以自己创建一个新实例:只提供获取所有必需值的构造函数,并在那时验证它们.