2011-11-05 2 views
4

C#에서는 생성자에서이 코드를 사용해도 괜찮습니까?C# : 생성자에서 사용

public class Test{ 

public Test() 
{ 
    Type type = this.GetType() 
} 

} 
+0

예. 여기를보세요 : http://www.codeproject.com/KB/dotnet/ConstructorsInCSharp.aspx – FailedDev

+0

예 ... 정확합니다. – Nitesh

답변

5

예, 생성자에는 this을 사용할 수 있지만 필드 초기화 프로그램에는 사용할 수 없습니다.

class Foo 
{ 
    private int _bar = this.GetBar(); 

    int GetBar() 
    { 
     return 42; 
    } 
} 

하지만이 허용됩니다 :

그래서이 유효하지 않습니다

class Foo 
{ 
    private int _bar; 

    public Foo() 
    { 
     _bar = this.GetBar(); 
    } 

    int GetBar() 
    { 
     return 42; 
    } 
} 
1

는이 같은 뭔가를 찾고 계십니까 : 간단한 예를 들어

(즉,이 생성자의 예를 참조 괜찮습니다)? 내가 생각

public class Test{ 

private string strName; 
public Test(string strName) 
{ 
    this.strName = strName; 
} 

} 

클래스의 모든 부분에서 사용하기 좋은입니다 this 식별자 ... 부가 요소, 메서드, 속성, 당신이 복잡한 클래스 나 큰 사람으로, 수정하거나 사용하는 것을 더 암시 얻을 수 있기 때문에 그것은 당신이 사용하고있는 것을 더 빨리 아는 데 도움이되지만 제가 말했듯이, 제 관점에서 볼 때.

+1

'this'는 나에게 부가 가치가없는 단지 여분의 자세한 내용이지만 각자 자신의 것입니다. . –

+0

그렇습니다. const, readonly와 같은 다른 예약어와 비슷합니다. 예를 들어 프로그래머 만해도 내 예제에서는 전역 속성/특성과 정확히 일치하는 매개 변수를 사용할 때 필요합니다. 다음과 같이 혼동하지 마십시오. 'this'..와 함께 로컬 변수, paremeter 또는 전역 변수를 사용하고 있습니다. 그러나 각자 자신의 –

+1

에 말했듯이 멤버 변수에 대한 밑줄을 사용하지 마십시오. 그 이유만으로'memberVariable' 컨벤션을 좋아하지 않습니다. 그런 다음 메서드 서명에서 충돌을 얻고 '여기'를 사용해야합니다. 또한, 나는 당신이 "Allusive"라고 말하는 것을 생각하지 않습니다. 아마 노골적입니까? :) –

관련 문제