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