기존 클래스의 기능을 확장하는 기법.
기반클래스를 물여받아 파생 클래스를 만들어 여기에 필드와 메소드를 추가하는 것과는 다르다.
using MyEx;
namespace MyEx
{
public static class Extension
{
public static int Double(this int originType, int value)
{
int result = value;
result *= value;
return result;
}
}
}
메소드를 선언하되, static 한정자로 수식해야하며,
메소드의 첫 번째 매개변수는 반드시 this 키워드와 함께 확장하고자 하는 클래스(형식)의 인스턴스 이어야한다.
그 뒤에 따라오는 value는 확장 메소드를 호출할 대 입력되는 매개변수이다.
또한 선언하는 클래스도 역시 static 한정자로 수식해야한다.
< 사용 >
int resultValue = 3;
resultValue = resultValue.Double(5);
Console.WriteLine(resultValue); // 25