我每天都使用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
调试:(
答案 0 :(得分:25)
第二个包含较少的字符,因此读取更紧凑。您不必再重复myClass 2,初始化逻辑在一个块中。
它实际上是一种语法糖,不会改变生成的代码中的东西。如果你不喜欢它,你可以随时在ReSharper上禁用警告。
关于在这里使用对象初始化器的优点的更长篇文章:
答案 1 :(得分:6)
如果初始化程序是函数调用,则可以部分地逐步进行调试:
MyClass c = new MyClass()
{
MyInt = 3,
MyString = GenerateString(9)
};
在这种情况下,F11将引导您直接进入GenerateString方法。
编辑:如果初始值设定项是简单值,那么无论如何,逐步调试都是没有意义的。