메서드 첫 번째 인자로 this가 보여서 당황스러울 때
이는 C#이 제공하는 확장 메서드로 이름 그대로 추가적인 메서드를 추가할 수 있습니다.
클래스, 자료구조, 인터페이스에 수정(modifying)이나 상속(deriving), 재 컴파일(re-compiling) 없이 메서드를 추가할 수 있도록 도와줍니다. 따라서 프로그래머가 직접 수정할 수 없는 .NET 프레임워크, 서드파티 클래스나 인터페이스에도 추가가 가능합니다.
예제 코드
class Program
{
static void Main(string[] args)
{
int i = 10;
bool result = i.IsGreaterThan(100); // int class에 없던 메서드가 추가되었다!
Console.WriteLine($"result : {result}");
}
}
public static class MyCustomeClass
{
static public bool IsGreaterThan(this int i, int value)
{
return value < i;
}
}
IsGreaterThan 메서드의 첫번째 파라미터로 오는 클래스에 메서드를 추가한다.
확장 메서드를 추가하면 기존의 메서드와 구분하기 위해서 C# 인텔리센스에서 특별한 심벌로 표시해 준다.
확장 메서드에 대한 정리
- 확장 메서드는 추가 사용자 지정 메서드이다.
- 확장 메서드를 추가하기 위해 선언한 클래스는 static 클래스여야 한다.
- 확장 메서드를 추가하기 위해 선언한 메서드는 static 메서드여야 한다.
- 확장 메서드의 첫 번째 매개 변수는 앞에 this 키워드가 와야 한다.
- 기존 static 클래스에는 확장 메서드를 추가할 수 없다. (ex. Math 클래스)
- 기존에 존재하는 메서드에 덮어쓰기(Overwrite)를 할 수 없다.
'프로그래밍 > C#' 카테고리의 다른 글
C# 이벤트(Event)에 대해서 알아보자 (4) | 2023.04.05 |
---|---|
C# Ref 와 Out 키워드 차이점에 대해서 (0) | 2023.04.04 |
Boxing, UnBoxing에 대해서 알아보자 (1) | 2023.03.31 |
C# 코드 컴파일 단계에 대해서 (2) | 2023.03.29 |
C# Discards _의 정체 (9) | 2023.03.23 |
댓글