컴퓨터/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# 프로그래밍 가이드)