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

eri*_*cdc 4 c# vb.net

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

Public Class SearchModel
    Public Property Tags As New List(Of TagDetails)
End Class 
Run Code Online (Sandbox Code Playgroud)

一个简单的转换导致这个,但"标签"为空:

public class SearchModel
{
    public List<TagDetails> Tags { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是创建"Tags"属性并同时创建新的空列表的可接受方式吗?

public class SearchModel
{
    public List<TagDetails> Tags = new List<TagDetails>();
}
Run Code Online (Sandbox Code Playgroud)

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

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

Tim*_*ter 8

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

public class SearchModel
{
    public SearchModel()
    {
        Tags = new List<TagDetails>();
    }
    public List<TagDetails> Tags { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


Gro*_*mer 5

在构造函数中实例化它:

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

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

    public SearchModel(List<TagDetails> tagDetails)
    {
        Tags = tagDetails;
    }
}
Run Code Online (Sandbox Code Playgroud)

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