如何在C#中实例化一个新的属性实例

时间:2012-10-10 21:41:17

标签: c# vb.net

在VB.Net中我使用了这个的变体,所以当使用SearchModel时,会有一个空的标签列表准备就绪。

Public Class SearchModel
    Public Property Tags As New List(Of TagDetails)
End Class 

一个简单的转换产生了这个但是"标签"为空:

public class SearchModel
{
    public List<TagDetails> Tags { get; set; }
}

这是否是一种可以接受的方式来创建&#34;标签&#34;属性并同时创建一个新的空列表?

public class SearchModel
{
    public List<TagDetails> Tags = new List<TagDetails>();
}

或者我应该参加这个仪式吗?

public class SearchModel
{
  private List<TagDetails> _TagDetails;
    public List<TagDetails> Tags
    {
        get { return _TagDetails ?? (_TagDetails = new List<TagDetails>()); }
        set { _TagDetails = value; }
    }
}

3 个答案:

答案 0 :(得分:8)

传统方法是使用构造函数:

public class SearchModel
{
    public SearchModel()
    {
        Tags = new List<TagDetails>();
    }
    public List<TagDetails> Tags { get; set; }
}

答案 1 :(得分:5)

在构造函数中实例化它:

public class SearchModel
{
    public List<TagDetails> Tags { get; set; }

    public SearchModel()
    {
        Tags = new List<TagDetails>();
    }

    public SearchModel(List<TagDetails> tagDetails)
    {
        Tags = tagDetails;
    }
}

我在C#中做到了这一点,因为你的大部分代码都是用C#编写的。您可以保持自动属性以这种方式执行。您还可以添加一个重载的构造函数,该构造函数包含要使用的列表(如果您不想要,请将其删除)。

答案 2 :(得分:0)

最直接的转换如下(这是VB在幕后做的事情):

public class SearchModel
{
    private List<TagDetails> _Tags = new List<TagDetails>();
    public List<TagDetails> Tags
    {
        get
        {
            return _Tags;
        }
        set
        {
            _Tags = value;
        }
    }
}