반응형
오늘은 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으로 정의 되어야 합니다. 그리고 사용할 때는 일반 인스턴스 매서드 처럼 사용하는 것이 주요 내용입니다.
이거 참 신기한 기능입니다만 이 편리한 기능도 남용된다면, 오해를 부르는? 이해가 어려운? 코드가 될 것으로 보이니, 상황에 따라 적절히? (쓰라는거야 말라는거야) 사용해야 하겠습니다.
반응형
'프로그래밍 이야기 > GameDev' 카테고리의 다른 글
C#코딩 연습 - Indexer (0) | 2020.11.21 |
---|---|
C#코딩연습 - 클래스 연습 (0) | 2020.11.18 |
C# 코딩 연습 - 배열기반 달리기 게임 (0) | 2020.11.11 |
C# 코딩 연습 - 랜덤한 두수의 합 다섯 문제 맞추기 (0) | 2020.11.07 |
C# 코딩 연습 - 달리기 게임 (0) | 2020.11.06 |