我发现自己在模式之后创建了大量属性:
private readonly MyType sth;
public MyClass(MyType sth) //class constructor
{
this.sth = sth;
}
public MyType Sth
{
get { return sth; }
}
是否有一种简单的方法可以自动创建这些属性?通常我:
是否可以加快速度?
答案 0 :(得分:3)
使用C#6,您的示例可以重写为:
private MyType sth { get; }
public MyClass(MyType sth) //class constructor
{
this.sth = sth;
}
这称为仅限getter的自动属性。当您删除“私有集”时,属性后面生成的字段被声明为只读像这样。
来自https://msdn.microsoft.com/en-us/magazine/dn879355.aspx
只有getter-only自动属性在结构和类声明中都可用,但它们对结构特别重要,因为结构是不可变的最佳实践指南。而不是声明一个只读属性并在C#6.0之前初始化它所需的六行左右,现在只需要单行声明和构造函数中的赋值。因此,不可变结构的声明现在不仅是结构的正确编程模式,而且是更简单的模式 - 从先前语法的一个非常值得赞赏的变化,其中编码正确地需要更多努力。
答案 1 :(得分:2)
请考虑此实时模板:
private readonly $MyType$ $FieldName$;
public $ClassName$($MyType$ $FieldName$) //class constructor
{
this.$FieldName$ = $FieldName$;
}
public $MyType$ $PropName$
{
get { return $FieldName$; }
}
其中参数的顺序为:
它看起来应该是http://screencast.com/t/aRQi0xVezXMb
希望它有所帮助!
答案 2 :(得分:0)
您可以利用自动getter和setter来使代码更清晰
public readonly MyType Sth {get; private set;}
public MyClass(MyType sth)
{
Sth = sth;
}
答案 3 :(得分:0)
我使用这个R#模板(名为prop):
public $TYPE$ $NAME$ { get; private set; }
它不会一直带你,如果你需要readonly和readonly很好。
一个alt +输入选项' to readonly'会很甜蜜。
方式是alt + enter> '对于具有支持字段的财产'然后删除setter + add readonly。不是很自动。