自动初始化类中的List和Dictionary auto属性

时间:2014-02-21 11:34:12

标签: c# properties

我有一个有这个属性的课程:

public Dictionary<string, string> LoggedProperties { get; set; }

我想自动初始化它。不使用构造函数。

原因是我认为没有专业人员将其默认值设为null

我的意思是,如果我访问一个类成员(静态或实例化该类后),我不希望得到null引用异常。它对我没有意义..我想避免对象的默认值为null。

有没有紧凑的方法呢?

3 个答案:

答案 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;
           }