有没有办法写这个,这样我就不必显式地声明字段_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<>
分配给属性为“使用类中的某个地方的属性”。或者你可以把它看成‘毫无意义的,像我的第三个例子那样去做’。
这些天哪一种做法被普遍认为是最佳做法?
发布于 2017-09-01 17:43:25
从C# 6开始,您可以这样做:
public IList<int> Prop1 { get; set; } = new List<int> { 1, 2, 3 };
发布于 2017-09-01 17:49:16
在.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>();
}
}
}
https://stackoverflow.com/questions/46005298
复制相似问题