- 이미 존재하는 클래스의 멤버에 유틸리티 성격의 메소드를 추가하고 싶을 경우 사용.
- FCL 및 3rd 파티의 많은 라이브러리를 사용하게 되므로 이전까지는 어쩔 수 없이 별도의 클래스를 만들어 사용하였다.
- 하지만 C# 3.0 부터 확장 메소드를 사용하면 새로운 클래스를 선언하지 않고 기존 클래스에 메소드를 추가할 수 있다.
* 확장 메소드로 선언을 하려면 반드시 정적 메소드로 선언을 하여야 한다.
(확장 메소드는 정적 메소드로만 선언이 가능하므로, 클래스도 정적 클래스를 선언하여 정리하면 편하다.)
- e.g
using System;
namespace TestPro
{
// Extension Method
public static class ExtensionMethod
{
public static bool IsEven(this int number)
{
bool isEven = ((number & 0x1) == 0) ? true : false;
return isEven;
}
}
class Program
{
static void Main(string[] args)
{
int number = 3;
Console.WriteLine("{0} 짝수 ? {1}", number, number.IsEven());
}
}
}
- 확장 메소드로 선언을 하면 이미 존재하였떤 메소드 처럼 해당 객체에서 바로 사용이 가능.
- 확장 메소드의 아이콘은 기존 메소드 아이콘과 다르게 아래로 향하는 화살표가 있다.
'Language > C#' 카테고리의 다른 글
[C#] Func / Action / 익명 형식 (0) | 2020.12.26 |
---|---|
[C#] 델리게이트 / 무명 메소드 / 이벤트 (0) | 2020.12.26 |
[C#] ref / out / params (0) | 2020.12.26 |
[C#] 프로퍼티(Property) / 인덱서(Indexer) (0) | 2020.12.26 |
[C#] 클래스 (0) | 2020.12.26 |