使用对象初始化程序 - Resharper建议

时间:2013-12-19 13:41:07

标签: c# optimization resharper object-initializers

我每天都使用ReSharper,今天我问自己为什么ReSharper在我这样做时会建议“使用对象初始值设定项”:

MyClass myClass = new MyClass();
myClass.MyInt = 0;
myClass.MyString = string.Empty;

它被替换为:

MyClass myClass = new MyClass
{
    MyInt = 0, 
    MyString = string.Empty
};

这是否可以优化我的代码执行,还是只需要重新格式化?

就个人而言,我喜欢它。但有时我讨厌它,因为这个:

Resharper

我不能step-by-step调试:(

2 个答案:

答案 0 :(得分:25)

第二个包含较少的字符,因此读取更紧凑。您不必再重复myClass 2,初始化逻辑在一个块中。

它实际上是一种语法糖,不会改变生成的代码中的东西。如果你不喜欢它,你可以随时在ReSharper上禁用警告。

关于在这里使用对象初始化器的优点的更长篇文章:

答案 1 :(得分:6)

如果初始化程序是函数调用,则可以部分地逐步进行调试:

MyClass c = new MyClass() 
{
    MyInt = 3,
    MyString = GenerateString(9)
};

在这种情况下,F11将引导您直接进入GenerateString方法。

编辑:如果初始值设定项是简单值,那么无论如何,逐步调试都是没有意义的。