흔히 다른 언어에서도 지원하는 것으로 클래스의 현재 인스턴스를 가리키는 키워드이다. 매개변수 이름과 클래스 필드가 이름이 같다면 this로 구분할 수 있게 된다.
정적 함수 파라미터에 하는 this는 확장 메서드를 만드는데 사용되는 키워드이다.
public static void Shuffle<T>(this IList<T> list)
이를 활용하면 멤버 함수를 호출하듯 함수를 호출할 수 있게 된다.
List<MyClass> exList = new List<MyClass>();
//...
Shuffle(exList); // 이렇게도 되고
exList.Shuffle(); // 이렇게도 된다
이런 식으로 클래스나 인터페이스를 확장할 수 있게 된다.
주의
기존 클래스의 함수와 동일한 시그니처로 정의하면 확장 메서드가 우선순위에서 밀려 호출되지 않게 된다.
- 확장 메서드는 컴파일 타임에 바인딩된다.