2011-01-08 5 views
1

올바르게 입력했는지 알고 싶습니다.이 키워드를 사용하면 입력란과 변수를 구분할 수 있습니까? 이처럼 : 메소드 매개 변수 (또는 로컬 변수) 필드와 같은 이름이있는 경우"this"키워드를 올바르게 사용 했습니까?

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

흠,이 시점에서 조금 구식 일지 모르지만 클래스 나 구조체의 필드에 항상'm' 접두사를 사용해야합니다. –

답변

9

예, 당신은 필요이 둘을 구분하기 위해 this를 사용합니다. 또한 StyleCopthis을 통해 수행되는 모든 반원 액세스에 대해 매우 음성적이지만, 그것이 좋은 아이디어인지 아닌지는 논쟁의 여지가 있는지 여부입니다. 그것은 일을 더 분명하게하지만 많은 시각적 인 혼란을 더합니다.

+2

이것은 "섀도 잉 (shadowing)"으로 알려져 있으며 이것에 대한 보컬 인 StyleCop 뿐만이 아닙니다. (http://leepoint.net/notes-java/data/variables/60shadow-variables.html) –

+0

@Hypnos : StyleCop이 불평합니다 * 'this'또는 'base'가없는 클래스 멤버의 모든 사용. 지역 변수가 그림자를 그릴 것만은 아닙니다. 비록 그것이 일반적으로 괜찮은 것 같아요 속성 및 생성자 인수에 대한 필드를 뒷받침 들어 있지만, 그것은 일반적으로 가난한 연습은 로컬 변수를 클래스 멤버를 그림자하는 것입니다. – Joey

관련 문제