본문 바로가기

c#

c#기초 Extension 확장 메서드 Extension Method

 

확장 메서드는 static(정적) 메서드의 한 종류입니다. 단 말 그대로 확장의 의미를 가지고 있는 신기한 기능입니다.

확장 메서드는 다른 클래스나 구조체 인터페이스에 적용 될수 있습니다.

 

위는 확장 메서드를 선언한 static클래스 확장메서드를 사용하기 위해서는 클래스 또한 정적으로 선언 해줘야 사용 가능합니다.

또한 첫번째 파라미터의 타입은 확장메서드를 사용 할 수 있는 타입으로 지정됩니다.

(첫번째 파라미터 앞에 this를 선언하여 타입을 지정해주어야 함)

위 코드는 string클래스에 확장메서드 Hello를 추가하여 string 객체에서 Hello라는 메서드를 사용 가능하게끔 만들어 줍니다.

string선언된 Hello객체에 Hello메서드 선언가능

위의 코드를 실행하면 아래와 같이 Hello 확장 메서드 안의 로직이 실행되어 출력됩니다.

또한 뒤의 파라미터에 this를 붙이면 아래와 같이 에러가 떠 컴파일이 되지 않습니다.

맨앞 파라미터는 타입이기 때문에 this로 지정해줘야함

이번에는 타입을 지정해준 뒤 실행을 해보겠습니다.

int 클래스의 객체에 5를 지정해준 뒤 파라미터인 5를 넣어줬기에 10의 값이 출력되는 것을 확인 할 수 있습니다.

 

이처럼 확장메서드는 메서드를 추가해야하는데 직접 추가하긴 까다롭거나 하면 안되는 곳에 사용합니다.

//확장메서드 클래스
static class Extension
    {
        public static void Hello( this string a) {

            Console.WriteLine("확장메서드 입니다.");
        }
        public static int Plus(this int  a, int b)
        {
            return a + b;
        }
        public static void Print(this string a)
        {
            Console.WriteLine("확장메서드 입니다.");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string Hello = "";

            int plus = 5;

            Hello.Hello();
           
            Console.WriteLine(plus.Plus(5));
            
        }
    }