【问题标题】:VisualStudio suggests deleting this-Keyword in important place?VisualStudio 建议在重要的地方删除 this-Keyword?
【发布时间】:2018-05-15 08:57:49
【问题描述】:

正如标题所说,VisualStudio 17 (15.7.1) 建议删除“不必要”的 this,据我了解,这实际上很重要。

假设我们有以下简约类:

class ThisExampleClass
{
    public int ThisTest1 { get; set; }
    public int ThisTest2 { get; set; }

    public ThisExampleClass()
    { }

    public ThisExampleClass(int ThisTest1, int ThisTest2)
    {
        this.ThisTest1 = ThisTest1;
        this.ThisTest2 = ThisTest2;
    }
}

到目前为止一切顺利。但是如果我编写以下代码行,VisualStudio 17 建议删除 this-Keywords。

class ThisExampleShowcase
{
    private int ThisTest1;
    private int ThisTest2;

    public ThisExampleShowcase()
    { }

    public void ShowQuestion()
    {
        ThisTest1 = 10;
        ThisTest2 = 11;
        var ThisTest = new ThisExampleClass()
        {
            ThisTest1 = this.ThisTest1, // delete this.
            ThisTest2 = this.ThisTest2  // delete this.
          //ThisTest2 = ThisTest2          Suggested but seems wrong
        };
    }
}

编译器会知道分配哪个 ThisTest 吗? 据我所知,这可能会影响变量,但即使您删除了“this”。一切似乎都很好。

C# 和 .NET 是否自动假定“this”。在这种情况下,右侧变量的含义是什么?

【问题讨论】:

  • 个人 id 名称 private int ThisTest1private int _thisTest1 ,然后 ThisTest1 = this.ThisTest1 变为 ThisTest1 = _thisTest1。你会准备好隆隆声
  • 我也会这样做,但我只是被委派清理一些旧代码,偶然发现了这个 VS 的建议,这让我感到奇怪。

标签: c# .net visual-studio this shadowing


【解决方案1】:

编译器会知道分配哪个 ThisTest 吗?

是的。在这种情况下,您不能在分配中使用来自新创建对象的属性,因此只有一个ThisTest

C# 和 .NET 是否自动假定“this”。在这种情况下,右侧变量的含义是什么?

没有。这种情况是一个特殊的情况,因为左侧是一个属性分配。在常规作业中,它可能是模棱两可的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多