编辑 1:我知道有诸如伸缩之类的替代方案,这是一个纯粹的教育问题。
我知道这是真的,但为什么一定要这样呢?看起来像这样:
public class Foo{
private int bar;
public void SetBar(int baz = ThatOtherClass.GetBaz(3)){
this.bar = baz;
}
}
编译器可以将方法更改为如下所示:
public void SetBar(int baz){
//if baz wasn't passed:
baz = ThatOtherClass.GetBaz(3);
this.bar = baz;
}
为什么那行不通,或者行不通,而这只是一个设计决定?