컴퓨터/C#

[C#] 확장 메서드

dolhim 2016. 2. 2. 17:55

확장 메서드란,


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

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


확장 메서드의 사용 방법은, 첫번째 파라미터의 앞에 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# 프로그래밍 가이드)