this 키워드는 클래스의 현재 인스턴스를 가리키며 확장 메서드의 첫째 매개 변수에 대한 한정자로도 사용됩니다.
설명만 읽어서는 매우 유용하게 쓰일것 같다...
하지만 실제로 그 쓰임은 많지 않은데 대표적으로 3가지가 있다.
1.필드에 변수이름과 현재사용중인 (메서드의)블럭안에 변수이름이 겹칠때
보통 생성자에서 많이 쓰인다.
public Car(string name)
{
this.name = name;
}
여기서 this.name은 필드의 name변수이고 그옆에 name은 현재블럭의 name변수이다.
이것을 MSDN에서는 숨겨진 멤버를 지정한다. 라고 부른다.
2. 인덱서를 만들때 사용된다.
public string this[int index]
{
get { return catalog[index]; }
set { catalog[index] = value; }
}
이런식으로 쓰이는데 여기서 this는 해석이나 이해가 필요하기보다는 패턴으로써 쓰인다.
굳이 해석을 하자면 형태를 지정할때 this자리에 현재 사용중인 객체의 이름이 들어간다는 의미이다.
우리가 평소에 쓰는 배열의 선언을 생각해보면 쉽게 알수가 있다. 평소에 배열을 선언할때에
public string 변수이름[];
이렇게 만드는데 여기서 변수이름대신에 this가 쓰인것 뿐이다. 여기서 this는 객체이름으로 바뀐다.
실제로 우리가 만든 객체의 이름을 출력하거나 객체이름.ToString() 을 출력해보면 보통 객체이름이 나온다.
이런 개념을 이어받았다고 생각하면 이해하기 편할것이다.
3. 개체를 다른메서드의 매개변수로 사용할때 사용한다.
가끔 어떤 메서드는 그 인자로 특정 클래스형 변수를 통채로 받아서 쓰기도 한다. 이럴때 지금 사용중인 객체를
넘겨줘야 하는 경우 this가 많이 쓰인다. 윈폼에서 자식창에 부모정보나 주소를 넘길때 쓰거나 한다.
'General > C, C++, C#' 카테고리의 다른 글
[C#] GDI+ 간단한 선 그리기 (1) | 2009.11.30 |
---|---|
[C#] GDI+, 이미지 처리, 이미지 출력 (0) | 2009.11.30 |
[C++] Using namespace (0) | 2009.11.30 |
[C++] 객체지향 프로그래밍 (0) | 2009.11.30 |
[C++] 객체지향 (0) | 2009.11.30 |