VisualStudio предлагает удалить это ключевое слово в важном месте? - PullRequest
0 голосов
/ 15 мая 2018

Как видно из заголовка, VisualStudio 17 (15.7.1) предлагает удалить «ненужное», которое, на мой взгляд, действительно важно.

Допустим, у нас есть следующий минималистический класс:

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 автоматически «это». значение для правосторонних переменных в этом случае?

1 Ответ

0 голосов
/ 15 мая 2018

Будет ли компилятор знать, какой ThisTest назначить?

Да. В этом случае вы не можете использовать свойства из вновь созданного объекта в назначении, поэтому есть только один ThisTest.

Считает ли C # и .NET автоматически "это"? значение для правосторонних переменных в этом случае?

Нет. Этот случай является частным, поскольку левая часть является назначением свойства. В обычном задании это может быть неоднозначно.

...