Was*_*RAR 31 c# resharper optimization object-initializers
我ReSharper每天都在使用,今天我问自己为什么ReSharper在我这样做时会建议"使用对象初始化器":
MyClass myClass = new MyClass();
myClass.MyInt = 0;
myClass.MyString = string.Empty;
Run Code Online (Sandbox Code Playgroud)
它被替换为:
MyClass myClass = new MyClass
{
MyInt = 0,
MyString = string.Empty
};
Run Code Online (Sandbox Code Playgroud)
这是否可以优化代码的执行,还是仅仅是重新格式化的问题?
就个人而言,我喜欢它.但有时我讨厌它,因为这个:

我不能做step-by-step调试:(
Cyr*_*don 27
第二个包含较少的字符,因此读取更紧凑.您不必再重复myClass 2,初始化逻辑在一个块中.
它实际上是一个语法糖,不会改变生成的代码中的东西.如果您不喜欢它,可以随时在ReSharper上禁用警告.
关于在这里使用Object Initializers的优势的更长篇幅:
如果初始化程序是函数调用,则可以部分地逐步进行调试:
MyClass c = new MyClass()
{
MyInt = 3,
MyString = GenerateString(9)
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,F11将引导您直接进入GenerateString方法.
编辑:如果初始化程序是简单的值,那么无论如何,逐步调试都是没有意义的.
| 归档时间: |
|
| 查看次数: |
16707 次 |
| 最近记录: |