확장 메소드(Extension Method)는 기존 클래스의 기능을 확장하는 기법입니다. 사용 예를 보면 기능 확장이라는 게 무슨 말인지 이해할 수 있을 겁니다.
확장 메소드 선언
namespace 네임스페이스이름
{
public static class 클래스이름
{
public static 반환형식 메소드이름 (this 대상형식 식별자, 매개변수목록)
{
// 원하는 코드
}
}
}
메소드는 클래스없이 선언될 수 없습니다. 선언하는 클래스는 static 한정자로 수식해야 합니다. 메소드 또한 static 한정자로 수식해야 합니다.
그리고 이 메소드의 첫 번째 매개 변수는 반드시 this 키워드와 함께 확장하고자 하는 형식의 인스턴스
여야 합니다. 그 뒤에 입력되는 매개 변수가 확장 메소드를 호출할 때 입력되는 매개 변수입니다.
사용 예제
namespace MyExtension
{
public static class IntegerExtention
{
public static int Power (this int myInt, int exponent)
{
int result = myInt;
for (int i = 1; i < exponent; i++)
result = result * myInt;
return result;
}
}
}
위 코드는 확장 메소드의 선언 예입니다.
아래 코드는 확장 메소드의 사용 예입니다.
using MyExtension;
int a = 2;
Console.WriteLine(a.Power(3));
Console.WriteLine(10.Power(4));
확장 메소드를 담는 클래스의 네임스페이스를 using 키워드로 사용할 수 있습니다. Power() 메소드가 int 형식의 메소드인 것처럼 사용할 수 있습니다.