假设我有一个类:
class Foo
{
private int blah;
private char bleh;
private string bluh;
//...
public Foo()
{
}
}
现在正常情况下,我必须这样初始化它:
public Foo(int blah, char bleh, string bluh,...)
{
this.blah=blah;
this.bleh=bleh;
this.bluh=bluh;
//...
}
这很无聊,似乎没有遵循";不要重复自己"原则,所以我正在寻找一个更好的解决方案。这能做到吗?
编辑:将变量更改为private,以反映更常见的用例。
如果您真的不想重复自己的,请在初始化变量/属性时使用对象初始化
像这个
Foo f = new foo{
blah = 1;
bleh = 'A';
bluh = "something";
};
另外,不要在字段上使用公共访问器,这是不好的。
class Foo
{
public readonly int blah;
public readonly char bleh;
public readonly string bluh;
//...
public Foo(int blah, char bleh, string bluh)
{
this.blah=blah;
this.bleh=bleh;
this.bluh=bluh;
//...
}
}
可以写为记录类型,并且是一个很好的候选者,因为它是不可变的。要将以上内容重写为记录,只需使用
public record Foo(int blah, char bleh, string bluh);
在我看来要干净得多,而且似乎是你想要的。