Свойства C # и это ключевое слово - PullRequest
0 голосов
/ 25 августа 2010

Когда мне следует использовать ключевое слово this для свойств в коде?

public class MyClass {
    public string MyString { get; private set; }
    public void MyMethod() {
        OtherClass.DoStuff(MyString); // Or this.MyString?
    }
}

Я знаю, что если имя свойства типа и совпадает, у вас есть , чтобы использовать this. для его работы.

public string Emailer Emailer { get { return _emailer; } }

Каковы правила использования this. для Свойства и даже Методы в классе? Я знаю, что нет никакой разницы в скомпилированном коде. Это все о ... затаить дыхание ... лучшие практики.

Ответы [ 3 ]

4 голосов
/ 25 августа 2010

Делайте то, что вы и ваша команда считаете наиболее читабельным. Некоторые люди любят быть явными; Я указываю this только когда мне действительно нужно. Это не будет иметь никакого значения для скомпилированного кода.

2 голосов
/ 25 августа 2010

Если имя параметра и элемент экземпляра имеют одно и то же имя, вам нужно будет использовать this.

Like:

public class MyClass
{
    private string something;

    public void SomeMethod (string something)
    {
        this.something = something;
    }
}

Но я бы посоветовал вам выбратьимена таким образом, что вам никогда не понадобится использовать this.В противном случае вы просто напрашиваетесь на неприятности - рано или поздно вы где-нибудь забудете this, и вам будет сложно отладить ваш код.

1 голос
/ 25 августа 2010

Использовать или нет this в основном вопрос предпочтений, и поэтому нет правильного или неправильного ответа.Это может стать чем-то вроде религиозной войны с разработчиками.Я часто нахожу, что лучше всего так или иначе прийти к соглашению о команде и использовать StyleCop для принудительного исполнения решения.

Лично я предпочитаю краткость и использую this только тогда, когда это действительно необходимо.Но я бы предпочел согласованность кодовой базы своим личным предпочтениям, потому что это довольно незначительная проблема.

Есть несколько случаев, когда это явно необходимо.На ум приходят методы расширения и в некоторых случаях для устранения неоднозначности идентификатора.Я считаю, что это довольно редко.

...