확장 메서드란,
메서드가 사용될 클래스명을 첫번째 파라미터로 지정하여,
마치 해당 클래스가 확장 메서드를 인스턴스 메서드로 갖는 것처럼 보이게하는 것이다.
확장 메서드의 사용 방법은, 첫번째 파라미터의 앞에 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# 프로그래밍 가이드)
'컴퓨터 > C#' 카테고리의 다른 글
[.net] jni4net 을 이용하여 c# .net 에서 .jar 파일 사용하기 (0) | 2016.04.26 |
---|---|
[VS10] 사용 가능한 소스 없음, PDB가 이미지와 일치하지 않습니다. (0) | 2016.02.22 |
[Error] '{0}' 어셈블리의 '{1}' 형식이 serializable로 표시되어 있지 않습니다. (0) | 2015.11.17 |
[C#] TypeLoadException 예외 해결 방법 (0) | 2015.08.31 |
[C#] Text 파일 줄 단위 읽기, 쓰기 (System.IO.File) (0) | 2015.08.31 |