c#类属性声明

时间:2017-09-01 17:26:45

标签: c# class

有没有办法写这个,所以我不必明确声明字段_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<>指定为“在类中的某处使用属性”。 或者你可以把它看成“没有意义,就像我的第三个例子那样。”

这些天通常被认为是最佳做法?

2 个答案:

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