gpt4 book ai didi

c# - Roslyn 代码分析器——什么时候应该使用 "this."?

转载 作者:可可西里 更新时间:2023-11-01 08:25:49 24 4
gpt4 key购买 nike

在使用实例成员时,我总是明确地使用我的代码,在它们前面加上 this. 和静态成员,在它们前面加上类型名称。

Roslyn 似乎不喜欢这样,并礼貌地建议您可以在代码中适本地省略 this.Type....

...所以我会在哪里做这个。.. (没有双关语意)

public void DoSomethingCool()
{
this.CallAwesomeMethod();
CoolCucumber.DoSomethingLessAewsome();
}

...roslyn 建议我这样做...

public void DoSomethingCool()
{
CallAwesomeMethod();
DoSomethingLessAwesome();
}

...然而,当谈到使用扩展方法时,似乎我不能省略 this. 的使用,例如...

public int GetTotal()
{
// This doesn't work
return Sum(o => o.Value);

// This does
return this.Sum(o => o.Value);
}

问题:

  1. 为什么 Roslyn 似乎不喜欢显式使用 this.Type.
  2. 为什么我需要显式使用 this. 作为扩展方法?
  3. 虽然严格来说不是这个问题的一部分,但我如何解决 Roslyn 不希望我使用 this.Type. 与 StyleCop 的分析器坚持我使用之间的差异他们?

最佳答案

您对此行为的看法是正确的。在使用 Visual Studio 2015 时,它也让我印象深刻,我和你一样想知道。以下是我对此的看法:

  1. 为什么 Roslyn 似乎不喜欢显式使用 this.Type.

    是开销大的,看来是想尽量减少需要的代码。不过,我更喜欢在我的代码中明确说明。在不知道其余代码的情况下理解变量的范围要容易得多。 (也许让我们了解代码分析器也是一种营销策略......还是我想多了)

  2. 为什么我需要显式使用 this. 作为扩展方法?

    我想这是提供扩展方法第一个参数 this 的规则。如果不提供 this,它就不知道调用该方法的上下文。实际上,扩展方法this.Sum(x => x)实际上被重写为Enumerable.Sum(this, x => x)。看到this的“需要”了吗?我想省略这在技术上是可行的,但在这种情况下我也更愿意明确说明,我很高兴编译器也这样做了。

关于c# - Roslyn 代码分析器——什么时候应该使用 "this."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com