我有一个有这个属性的课程:
public Dictionary<string, string> LoggedProperties { get; set; }
我想自动初始化它。不使用构造函数。
原因是我认为没有专业人员将其默认值设为null
我的意思是,如果我访问一个类成员(静态或实例化该类后),我不希望得到null引用异常。它对我没有意义..我想避免对象的默认值为null。
有没有紧凑的方法呢?
答案 0 :(得分:2)
private Dictionary<int,string> m_LoggedProperties = new Dictionary<int, string>();
public Dictionary<int,string> LoggedProperties
{
get
{
return m_LoggedProperties;
}
set
{
m_LoggedProperties = value;
}
}
虽然without using the constructor
是什么意思?无法初始化未初始化对象的成员。它只是一个语法糖 - 字典成员仍将在构造函数调用中初始化。
答案 1 :(得分:1)
当前版本的C#不支持初始化自动属性。
这是VisualStudio C# UserVoice上高度要求的功能之一。它有可能在C#6中实现,因为开发人员决定在此版本中添加许多微小的语法功能。如果您希望实现该功能,可以投票支持。
答案 2 :(得分:0)
唯一的方法是将AutoProperty更改为标准属性,如:
private Dictionary _LoggedProperties = new Dictionary<string, string>();
public Dictionary<string, string> LoggedProperties
{
get { return _LoggedProperties; }
set { this._LoggedProperties = value; }
}
如果您想在首次使用时初始化您的属性,可以执行以下操作:
get {
if (_LoggedProperties == null)
{
_LoggedProperties = new Dictionary<string, string>();
}
return _LoggedProperties;
}