본문 바로가기

C#/C# 문법

C# 확장 메서드 Extension Method

728x90
728x90

C#에서는 기존에 존재하던 클래스나 타입에 메서드를 덧붙이는 확장 메서드 문법을 지원한다.

 

JS를 공부한 사람이라면 JS의 프로토타입과 유사하다고 이해할 수 있다.

 

예를 들어 이런 식으로 int에 Double이라는 메서드를 추가할 수 있다.

 

namespace ExtensionLibrary
{
    public static class IntExtension
    {
        public static int Double(this int x)
        {
            return x * x;
        }

        public static void Add(this ref int x, int arg)
        {
            x += arg;
        }
    }
}

 

this는 메서드를 덧붙이길 원하는 클래스나 타입이 된다. 확장 메서드를 구현하기 위해 필수로 포함해야 되는 매개변수가 된다.

 

위 코드처럼 객체 자체의 변화를 원하는 경우 레퍼런스를 전달할 수 있다.

 

this를 포함시켰으면 원하는 매개변수를 넣으면 된다.

 

확장 메소드를 구현하기 위해선 확장 메서드를 포함하는 클래스, 메서드가 전부 static이어야 한다.

 

위에 선언한 확장 메소드는 다음과 같이 사용할 수 있다.

using ExtensionLibrary;

int a = 2;
a.Add(10);
Console.Write(a.Double());

// 144

 

이렇게 기존의 클래스에서 메서드를 가져다 붙일 수 있으니 적절할 때 쓰면 아주 유용할 것이다.

728x90
728x90

'C# > C# 문법' 카테고리의 다른 글

C# Func와 Action 대리자  (0) 2022.04.11
C# delegate (델리게이트, 대리자) 기초  (0) 2022.02.06
C# ref와 out의 차이  (0) 2022.01.01