확장 메서드
- 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있습니다. 확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출됩니다.
- 이제 int, string 형 변수에서 사용할 수 있는 IsEven(), Dash() 확장 메서드를 선언해봅시다.
확장 메서드 정의하기
- 우선 확장메서드를 작성하기에 앞서 조건이 크게 3가지가 존재합니다.
- 첫째. 확장메서드를 가지는 클래스는
Static
이어야 합니다. - 둘째, 확장메서드는
Static
이어야 합니다. - 셋째, 확장메서드의 첫번째 매개변수는
this
지시어를 붙여야합니다.- 즉 예제에서, int타입의 변수에 IsEven이라는 메서드를 추가해서 사용하겠다는 것을 의미합니다.
- 확장 메서드 Dash의 경우는 string타입의 변수에 Dash라는 메서드를 추가하여 사용하겠다는 것을 의미합니다.
- int형 변수가 IsEven메서드를 사용하는 경우 매개변수를 넣지 않아도 사용할 수 있습니다.
- 예제에서 a의 값 '2'가 IsEven()의 1번째 매개변수로 대입되어 사용됩니다.
- string형 변수가 Dash메서드를 사용하는 경우 1번째 매개변수는 넣지 않고, 2번째 매개변수를 넣어야 사용 할 수 있습니다.
- 예제에서 s의 값 'aaa'가 Dash()의 1번째 매개변수로 대입되어 사용됩니다.
확장메서드 예제
// 확장메서드 정의
public static class MyExtension
{
public static bool IsEven(this int a)
{
return a % 2 == 0;
}
public static string Dash(this string s , string txt)
{
return s + txt;
}
}
// Main에서 int형 변수의 확장메서드 사용
static void Main(string[] args)
{
int a = 2;
bool b = a.IsEven(); // b == true;
b = 3.IsEven(); // b == false;
string s = "aaa";
string t = s.Dash("bbb");
Console.WriteLine(t); // 출력 : aaabbb
}
'프로그래밍 > C#' 카테고리의 다른 글
[C#] CSV 파일 생성 및 쓰기 (0) | 2021.12.01 |
---|---|
[C#] Linq - Enumerable.Aggregate (0) | 2021.10.23 |
[C#] 대리자 (delegate) (0) | 2021.09.26 |
[C#] 리플렉션 (Reflection) (0) | 2021.09.12 |
[C#] DateTime.Ticks 속성 변환하기 (0) | 2021.07.29 |