我每天都在使用ReSharper,今天我问自己,当我这样做的时候,ReSharper为什么会建议“使用对象初始化器”:
MyClass myClass = new MyClass();
myClass.MyInt = 0;
myClass.MyString = string.Empty;它将被替换为:
MyClass myClass = new MyClass
{
MyInt = 0,
MyString = string.Empty
};这是否优化了代码的执行,或者仅仅是重新格式化的问题?
就我个人而言,我喜欢它。但有时我讨厌它,因为:

我不能做step-by-step调试:(
发布于 2013-12-19 21:46:56
第二个包含的字符较少,因此阅读起来更紧凑。您不必再重复myClass 2次,并且初始化逻辑在一个块中。
它实际上是一种语法糖,不会改变生成的代码中的任何东西。如果你不喜欢它,你可以随时禁用ReSharper上的警告。
这里有一个关于使用对象初始化器的优点的更长的帖子:
发布于 2013-12-19 22:04:56
如果初始化器是函数调用,您可以部分地进行分步调试:
MyClass c = new MyClass()
{
MyInt = 3,
MyString = GenerateString(9)
};在这种情况下,F11将引导您直接进入GenerateString方法。
编辑:如果初始化器是简单的值,那么分步调试无论如何都是没有意义的。
https://stackoverflow.com/questions/20683279
复制相似问题