본문 바로가기
프로그래밍/C#

C# 확장 메서드(Extension Method)

by bantomak 2023. 4. 3.

메서드 첫 번째 인자로 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# 인텔리센스에서 특별한 심벌로 표시해 준다.

 

확장 메서드의 첫번째 인자를 float로 변경할 경우 컴파일 에러가 발생한다.

 

확장 메서드에 대한 정리

  • 확장 메서드는 추가 사용자 지정 메서드이다.
  • 확장 메서드를 추가하기 위해 선언한 클래스는 static 클래스여야 한다.
  • 확장 메서드를 추가하기 위해 선언한 메서드는 static 메서드여야 한다.
  • 확장 메서드의 첫 번째 매개 변수는 앞에 this 키워드가 와야 한다.
  • 기존 static 클래스에는 확장 메서드를 추가할 수 없다. (ex. Math 클래스)
  • 기존에 존재하는 메서드에 덮어쓰기(Overwrite)를 할 수 없다.

댓글