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
'C# > C# 문법' 카테고리의 다른 글
C# Func와 Action 대리자 (0) | 2022.04.11 |
---|---|
C# delegate (델리게이트, 대리자) 기초 (0) | 2022.02.06 |
C# ref와 out의 차이 (0) | 2022.01.01 |