初始化C#自动
这个问题在这里已经有了答案:
更新 - 下面的答案是在C#6出现之前编写的。 在C#6中,您可以编写:
public class Foo
{
public string Bar { get; set; } = "bar";
}
您也可以编写只读的自动实现的属性,这些属性只能在构造函数中写入(但也可以赋予默认的初始值:
public class Foo
{
public string Bar { get; }
public Foo(string bar)
{
Bar = bar;
}
}
不幸的是,现在没有办法做到这一点。 您必须在构造函数中设置该值。 (使用构造函数链可以帮助避免重复。)
自动实现的属性现在很方便,但肯定会更好。 我不觉得自己需要这种初始化,就像只能在构造函数中设置的只读自动实现的属性一样,并且只能通过只读字段来支持。
这并没有发生,直到包括C#5,但是正在为C#6计划 - 无论是允许在声明点初始化,还是允许在构造函数体中初始化只读自动实现的属性。
你可以通过你的类的构造函数来完成它:
public class foo {
public foo(){
Bar = "bar";
}
public string Bar {get;set;}
}
如果你有另一个构造函数(也就是一个需要参数的构造函数)或者一堆构造函数,你总是可以拥有这个构造函数(称为构造函数链):
public class foo {
private foo(){
Bar = "bar";
Baz = "baz";
}
public foo(int something) : this(){
//do specialized initialization here
Baz = string.Format("{0}Baz", something);
}
public string Bar {get; set;}
public string Baz {get; set;}
}
如果您始终将调用链接到默认构造函数,则可以在此处设置所有默认属性初始化。 链接时,链接的构造函数将在调用构造函数之前调用,以便更专业的构造函数可以根据需要设置不同的默认值。
在C#6.0中将是可能的:
public int Y { get; } = 2;
链接地址: http://www.djcxy.com/p/51345.html
上一篇: Initializing C# auto
下一篇: C# 3.0 auto