본문 바로가기
프로그래밍 이야기/GameDev

C# 코딩 연습 - 확장 메서드

by Mulder5 2020. 11. 15.
반응형

오늘은 C# 확장 매서드를 공부했습니다. 이거 참 신기한 기능이네요. 

class AA
{
    public void PrintAA(string str) {
        Console.WriteLine("PrintAA {0}", str);
    }
}

static class Util
{
    public static void Print(this AA aa, string str) {
        aa.PrintAA(str);
    }

    public static void Sum(this int a) {
        Console.WriteLine("{0} + {1} = {0}", a, a, a + a);
    }
}

class Program
{
    static void Main(string[] args) {
        AA aa = new AA();

        Util.Print(aa, "Hello");
        aa.Print("Hello");

        Util.Sum(10);
        10.Sum();
    }
}

위 코드에서 확장 매서드에 대한 핵심 코드는 "this AA aa" 입니다. 이 함수에 대한 이러한 파라미터 하나만으로 class AA에 매서드가 하나 추가된 것과 같은 효과가 나타납니다. 그렇기 때문에 aa.Print("Hello"); 가 문제 없이 동작하게 됩니다.

그리고 이 확장 메서드는 static으로 정의 되어야 합니다. 그리고 사용할 때는 일반 인스턴스 매서드 처럼 사용하는 것이 주요 내용입니다.

이거 참 신기한 기능입니다만 이 편리한 기능도 남용된다면, 오해를 부르는? 이해가 어려운? 코드가 될 것으로 보이니, 상황에 따라 적절히? (쓰라는거야 말라는거야) 사용해야 하겠습니다.

반응형