有没有办法写这个,所以我不必明确声明字段_D
?
= new List<T>()
?我有什么:
class c {
private List<T> _D = new List<T>();
public List<T> D { get { return _D; } set { _D = value; } }
}
我想要的是什么:
class c {
public List<T> D { get; set; }
}
声明构造函数为属性List<T>
分配不是更好吗?如:
class c {
c() { D = new List<t>(); }
public List<t> D { get; set; }
}
在实现属性和分配初始值时,今天的最佳做法是什么?
这三个在技术上都是正确的。我找到了我接手的一些代码中的第一个。我找不到声明所有属性支持字段的原始代码背后的任何目的。我认为声明支持字段不是自c#v3以来的最佳实践..除非你实际上要在类的方法中使用私有字段,这在这里没有发生。
您可以将属性初始List<>
指定为“在类中的某处使用属性”。
或者你可以把它看成“没有意义,就像我的第三个例子那样。”
这些天通常被认为是最佳做法?
答案 0 :(得分:5)
从C#6开始,你可以这样做:
public IList<int> Prop1 { get; set; } = new List<int> { 1, 2, 3 };
答案 1 :(得分:0)
有几种方法可以在.NET中实现相同的功能以及最佳实践和建议。这一切都取决于您对对象和属性的要求和责任。我看到了一个评论,其中包含指向编程指南的链接。这些只是一些例子。
public class C<T>
{
public List<T> D { get; set; } = new List<T>();
}
public class C2
{
public IReadOnlyList<int> D { get; private set; }
public C2()
{
D = new List<int>();
}
}
public class C3
{
private List<int> _d = null;
public List<int> D
{
get
{
return _d ?? new List<int>();
}
}
}