본문 바로가기

컴퓨터/C#

[C#] 확장 메서드

확장 메서드란,


메서드가 사용될 클래스명을 첫번째 파라미터로 지정하여,

마치 해당 클래스가 확장 메서드를 인스턴스 메서드로 갖는 것처럼 보이게하는 것이다.


확장 메서드의 사용 방법은, 첫번째 파라미터의 앞에 this 키워드를 써주면 된다.


1
2
3
4
5
6
7
8
9
10
11
namespace ExtensionMethods 
    public static class MyExtensions 
    { 
        public static int WordCount(this String str) 
        { 
            return str.Split(new char[] { ' ''.''?' },  
                             StringSplitOptions.RemoveEmptyEntries).Length; 
        } 
    }    
cs

>> WordCount 라는 확장 메서드를 생성하였다.


위의 예제를 살펴보면,

WordCount라는 메서드는 MyExtensions 클래스에 선언되었지만, 사실 String 클래스에 의해 호출될 것이다.


아래 예제를 살펴보면 이해가 될 것이다.



1
2
3
// 사용 예제
string s = "Hello Extension Methods";
int i = s.WordCount();
cs

>> string 클래스로부터 WordCount 메서드를 호출하였다.


확장 메서드는 새 파생 클래스를 만들거나, 원래 클래스(여기서는 string)을 수정하는 대신에 사용된다.



- 다 좋은데 잘못 만들면 에러 난다. 2015/04/22 - [오늘의../오늘의 뻘짓] - [C#] 확장 메서드는 제네릭이 아닌 정적 클래스에 정의해야 합니다




참고 : 예제로 배우는 C# 프로그래밍-C# 확장 메서드 (Extension Method)

참고 : 확장 메서드(C# 프로그래밍 가이드)