2011-01-08 3 views
1

Хотелось бы узнать, правильно ли я получаю: также с помощью этого ключевого слова я могу различать поля и переменные? Как это:Правильно ли это использование ключевого слова «this»?

class X 
{ 
    int x; 
    public X(int x) 
    { 
    this.x=x; 
    } 
} 
+0

Хм, я мог бы быть немного старомодным в этой точке, но я всегда требую использования префикса 'm' для полей класса или структуры. –

ответ

9

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

+2

Это называется «затенение», и это не просто стиль StyleCop, который вокал об этом = D (http://leepoint.net/notes-java/data/variables/60shadow-variables.html) –

+0

@Hypnos: StyleCop жалуется на * каждый * использование члена класса без 'this' или' base'. Не только те, где локальная переменная будет затенять его. Согласитесь, однако, что обычно неэффективная практика заключается в том, что локальная переменная shadow является членом класса, хотя для поддержки полей для свойств и аргументов конструктора я предполагаю, что это в основном нормально. – Joey

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