ser*_*0ne 12 .net c# roslyn c#-6.0 roslyn-code-analysis
在使用实例成员时,我总是明确地使用我的代码,在它们前面this.加上静态成员,并在前面添加类型名称.
罗斯林似乎不喜欢这一点,并礼貌地建议你可以省略this.,并Type.从你的代码在适当情况下...
......所以我会这样做... (没有双关语意)
public void DoSomethingCool()
{
this.CallAwesomeMethod();
CoolCucumber.DoSomethingLessAewsome();
}
Run Code Online (Sandbox Code Playgroud)
... roslyn建议我这样做......
public void DoSomethingCool()
{
CallAwesomeMethod();
DoSomethingLessAwesome();
}
Run Code Online (Sandbox Code Playgroud)
...但是当谈到使用扩展方法时,似乎我不能省略this.例如...... 的使用
public int GetTotal()
{
// This doesn't work
return Sum(o => o.Value);
// This does
return this.Sum(o => o.Value);
}
Run Code Online (Sandbox Code Playgroud)
问题:
this.和Type.?this.用于扩展方法?this.和Type.和了StyleCop的分析仪坚持,我使用它们?你对这种行为是正确的.使用Visual Studio 2015时,它也让我感到震惊,我也想到了和你一样.以下是我对此的看法:
为什么罗斯林似乎不喜欢明确使用this.和Type.?
这是开销,似乎它想要最小化所需的代码.我喜欢在我的代码中明确表达.在不知道其余代码的情况下,更容易理解变量的范围.(也许这也是让我们了解代码分析器的营销策略......或者我在想太多)
为什么我需要明确this.用于扩展方法?
我想这是提供扩展方法的第一个参数的规则this.没有提供this它就不知道调用该方法的上下文.实际上,扩展方法this.Sum(x => x)实际上被重写为Enumerable.Sum(this, x => x).看到'需要'是为了this什么?我想在技术上可以省略这一点,但我更喜欢在这种情况下明确,我很高兴编译器也这样做.