C#中的属性init

时间:2014-04-28 14:15:19

标签: c# .net properties

我在很多情况下用来编写像

这样的属性
public string Data {get; private set; }

通常我在构造函数中初始化它们 如何为Data提供一些值,而不是使用构造函数

4 个答案:

答案 0 :(得分:7)

使用支持字段代替自动实现的属性,使用相同的值初始化该字段,然后通过以下属性公开它:

private string _Data = "Some Value";

public string Data
{
    get { return _Data; }
    private set { _Data = value; } //or remove it
}

答案 1 :(得分:3)

您可以使用支持变量

private string _data = "foo";
public string Data {get {return _data;} private set {_data = value;}}

或者在C#6中你可以像这样写

public string Data {get; private set; } = "foo";

答案 2 :(得分:1)

没有自动属性。如果您有支持字段,则可以对其进行初始化:

private string _Data = "some value";
public string Data {get {return _Data;} private set {_Data = value;} }

答案 3 :(得分:0)

C#9.0将针对此特定问题提供新的init访问器:

public class DataClass
{
    public string Data {get; init; }
}

现在,您可以为DataClass使用对象初始化程序了,而不是使用构造函数:

var d = new DataClass { Data = "newValue" };

更多详细信息here