C#构造函数重载:能否用分号替代空大括号?
当然可以!这是C# 6.0+支持的简化写法
嘿,这个细节抓得很准!答案是肯定的——从C# 6.0版本开始,你完全可以把那些只调用其他构造函数的空大括号{}替换成分号;的写法,而且功能上和原来的代码完全一致。
修改后的代码示例:
class Foo { public int Value; public Foo(Bar bar) : this(bar.Ga); public Foo(Baz baz) : this(baz.Bu); public Foo(Qux qux) : this(qux.Zo); public Foo(int val) { ... this.Value = val; ... } }
为什么可以这么写?
这是C#提供的语法糖,专门用来简化仅调用其他构造函数(this或base)、无额外逻辑的构造函数定义。编译之后,这种分号写法和原来的空大括号写法生成的IL代码完全相同,不会有任何性能或功能上的差异,只是让代码看起来更简洁清爽。
注意事项
如果之后你需要给这些构造函数添加额外逻辑(比如参数校验、日志输出等),就必须把分号改回大括号,把新增的代码写在括号里——毕竟分号只能用于完全空逻辑的构造函数调用场景。
内容的提问来源于stack exchange,提问作者Maxime Recuerda
相关产品推荐
相关产品推荐

