728x90
확장 메서드를 이용하면 인터페이스에 새로운 동작을 추가할 수 있다. 그리고 손쉽게 기능을 확장할 수 있다.
특히 API를 추가적으로 정의하지 않고도 새로운 기능을 추가할 수 있다.
확장 메서드란
미리 정의된 형식에 사용자 정의 함수를 확장(추가) 시키는 작업.
정적으로 정의해서 인스턴스 메서드처럼 사용한다.
즉, 정적 클래스에서 정의해주고 사용할 땐 확장 메서드를 정의하는 클래스가 포함된 네임스페이스를 포함(using)해줌으로 사용한다.
사용 예시
static class ExtenstionMethods{
public static void Print(this string s) {
Console.WriteLine(s);
}
}
class ExampleClass{
public static void Main(string[] args){
string text = "Hello from ExtensionMethods";
text.Print();
}
}
결과
Hello from ExtenstionMethods 가 출력된다.
메서드의 장점
- 이미 구현하고 있는 클래스를 수정할 필요가 없다.
- 메서드를 생성했다고 다른 장소에서 메서드를 추가로 구현해줄 필요가 없다.
- 필수로 구현해야 하는 메서드 수를 줄일 수 있다.
- 사용자에게 풍부한 기능을 제공할 수 있다.
구현 시 주의해야 할 점
- 여러 클래스에서 반드시 구현해야 하는 인터페이스를 정의하는 경우 인터페이스 내에 정의하는 멤버 수를 최소한으로 해야 한다.
- 사용자 편의를 위해 추가적으로 제공하려는 메서드는 확장 메서드의 형태로 구현하는 것이 좋다.
반응형
'개발공부 > C#' 카테고리의 다른 글
[Effective C#] 아이템 29 : 시퀀스를 반환해야 하는 경우 컬렉션을 반환하기보다 이터레이터를 반환하는 것이 낫다. (0) | 2021.12.05 |
---|---|
[Effective C#] 아이템 28 : 확장 메서드를 이용하여 구체화된 제네릭 타입을 개선하라 (0) | 2021.12.04 |
[Effective C#] 아이템 26 : 제네릭 인터페이스와 논제네릭 인터페이스를 함께 구현하라 (0) | 2021.12.02 |
[Effective C#] 아이템 25 : 타입 매개변수로 인스턴스 필드를 만들 필요가 없다면 제네릭 메서드를 정의하라 (0) | 2021.12.01 |
[Effective C#] 아이템 24 : 베이스 클래스나 인터페이스에 대해서 제네릭을 특화하지 말라 (0) | 2021.11.30 |