2010-08-25 2 views
0

Когда я должен использовать ключевое слово this для свойств в коде?Свойства C# и это ключевое слово

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. на Свойства и даже методы в классе? Я знаю, что это не имеет никакого отношения к скомпилированному коду. Это все о ... держи дыхание ... лучшие практики.

ответ

4

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

+0

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

+0

@ Seb: Это действительно личное предпочтение - вам нравится очень компактный код, изредка вам, возможно, придется подумать немного больше, чтобы понять, используете ли вы переменную экземпляра или локальную переменную ... или предпочитаете больше, больше явный код? –

+0

Aaah, «явный», это ключевое слово, которое помогает мне в моем базовом вопросе. Упомяните об этом в своем ответе и получите обычную отметку в виде скита: P –

2

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

Как:

public class MyClass 
{ 
    private string something; 

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

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

1

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

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

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

+0

+1 для упоминания методов расширения. Замечание: это, скорее всего, будет проблемой, если вы определили метод расширения на интерфейсе или базовом классе и хотели бы использовать это изнутри класса, реализующего этот интерфейс или базовый класс, иначе вам, вероятно, лучше реализовать это как метод производного класса. – Crisfole

Смежные вопросы