2012-10-08 5 views
0

저는 C# 프로젝트에 Resharper를 사용하고 있습니다.'this'키워드가 중복 됨

저는 개인 전역 변수를 만들고 일반적으로 'this'키워드를 사용하여 변수 이름 앞에 this.FirstName을 붙입니다.

Resharper는 분명히 'this'대신 밑줄을 사용하기를 원하지만 'this'키워드가 중복된다는 사실을 충분히 강조합니다. MSDN 사이트에는 이에 대한 언급이 없습니다. 나는 어떤 이름 지정 규칙 (_ 또는 this 또는 대문자/소문자 사용)을 사용하든 관계없이 최종적으로 사용자의 선택에 따라 영향을 받았다고합니다. 클래스)).

아무도이 같은 말을들은 적이 없거나 중복 된 설명이 Resharper의 의견 일 뿐이라고 생각하는 사람이 조금 우스운 것처럼 보일 수 있습니다.

+1

이 질문에 대한 모든 대답은 의견 일 것입니다. "올바른"답변이 없습니다. http://programmers.stackexchange.com/에서이 질문을하는 것이 좋습니다. 토론 유형 질문이 더 있습니다. –

+1

"중복"이라는 말은 "이 컨텍스트에서는 필요 없음 *"* 별개이며 불필요한 것을 의미합니다. ... "충분히 굵게"되지 않습니다. 거기에 의미가 바뀌는 경우에만 * 엄격히 요구됩니다. –

+0

예, 죄송합니다. 중복 된 단어와 혼동스러워졌습니다. – Dave

답변

9

"중복"은 필요하지 않음을 의미합니다. 이 경우 키워드가 컴파일러에서는 필요하지 않기 때문에 ReSharper가 옳습니다.

문체 반대이 있는지 여부는 다른 문제입니다. 그게 당신에게 더 잘 맞는다면 ReSharper가 그 사용을 무시하도록 구성 될 수있을 것이라고 확신합니다.

1

설명으로, this 키워드는 사람이 코드를 읽을 때 가장 유용하며 개인 액세스 수정 자입니다. 그러나 당신이 참조하고있는 필드를 알고 있기 때문에 엄격하게 필요하지는 않습니다. 그리고 접근 수정자가 지정되어 있지 않으면 암묵적인 것이 사적인 것임을 압니다.

+1

사실, 그 반대가 사실입니다. 누락되었거나 (다른로드/호출 문이 발행되는) 컴파일 타임에 'this'가 * 추가 ​​*되었다고 말하는 것이 더 정확할 것입니다. –

+1

나는 일리노이 코드에서 이와 비슷한 키워드를 보지 못한다. decompilers는 ussually 그들을 추가한다. – Freeman

+1

내가 코멘트에서 말했듯이 IL 코드에는 명백한'this' 키워드가 없지만 멤버 변수/메소드는 다른 것과 다르게 처리됩니다. 중요한 점은 대답이 말하는 것과는 달리 C# 소스 수준이 아니라면 차이가 IL 수준에서 중요한 점입니다. –

1

는 개인적으로 나는 ReSharper에서 동의와 내가 사용하는 코딩 스타일 다음 this 키워드

public class Foo 
{ 
    private readonly string _bar; 
    public Foo(string bar) 
    { 
     _bar = bar; 
    } 
} 

앞에 덧붙이 필드는 물론 개인의 선택의 문제이다.

1

귀하의 게시물을 완전히 오해 한 적이 있다면 용서해주십시오. 그러나 첫 번째 반응은 C#에서 "this"키워드 사용에 대해 명확하지 않을 수 있다는 것입니다. 클래스 멤버 이름에 대해 명명법을 사용하는 것과 "this"라는 키워드로 암시 된 범위 분석 사이의 구별이 모호해 보입니다.

런타임시 "this"는 항상 현재 개체 인스턴스를 참조합니다. 많은 개발자들은 클래스 스타일 변수를 코딩 스타일의 문제로 나타 내기 위해 밑줄 접두사를 사용합니다.

+0

죄송합니다 - 제가 실수로 단어 중복 및 감가 상각을당했습니다! – Dave

4

다른 답변은 물론, 한 가지 추가 설명했다 : this 가끔 유용하게 사용할 수 있습니다 : 당신이 참조하는 하나 알 수 있도록 그들이 같은 이름 때문에

public class User 
{ 
    private string firstname; 

    public User(string firstname) 
    { 
     this.firstname = firstname; 
    } 
} 

this가 여기에 필요 .

개인적인 취향이지만, 대부분은 중복되지만, 가치 있다고 생각되면 Resharper의 경고에서 제거 할 수 있습니다. 옵션의 코드 편집 및 스타일 캅 플러그인을 사용하는 경우 코드 정리 프로파일에도 적용됩니다.

관련 문제