확장 메서드를 사용하기 위해서 클래스를 만드는데 이때 클래스명이 문법적의 컴파일 오류에 있어서 중요한것은 아니고
public static void method(타입 src, ... ){
}
의 함수에서 타입 자리에 어떤 타입이 오는지에 따라 호출 할 수있는 원본 클래스가 결정된다는 부분이 구분역할로써 중요하다
\
C# 확장 메서드 (Extension Method)
C# 3.0부터 지원하는 확장메서드(Extension Method)는 특수한 종류의 static 메서드로서 마치 다른 클래스의 인스턴스 메서드인 것처럼 사용된다. 일반적으로 instance 메서드를 추가하기 위해서는 해당 클래스안에 메서드를 추가한다. 만약 여러 개의 클래스들에 instance 메서드를 추가하고 싶다면, 각 클래스마다 메서드를 추가해 주어야 한다 (물론 Base Class가 있는 경우, 클래스 상속을 이용할 수도 있다).
확장 메서드는 메서드가 사용될 클래스명(혹은 Type)을 첫번째 파라미터로 지정하여 마치 해당 클래스(혹은 Type)가 확장메서드를 인스턴스 메서드로 갖는 것과 같은 효과를 낸다. 약간 특이한 문법이지만, 확장 메서드의 첫번째 파라미터는 앞에 항상 this를 써준다.
아래 예제는 String 클래스를 첫번째 파라미터로 갖는 확장메서드 즉 String 클래스에서만 동작하는 확장 메서드를 정의한 예이다.
확장 메서드는 메서드가 사용될 클래스명(혹은 Type)을 첫번째 파라미터로 지정하여 마치 해당 클래스(혹은 Type)가 확장메서드를 인스턴스 메서드로 갖는 것과 같은 효과를 낸다. 약간 특이한 문법이지만, 확장 메서드의 첫번째 파라미터는 앞에 항상 this를 써준다.
아래 예제는 String 클래스를 첫번째 파라미터로 갖는 확장메서드 즉 String 클래스에서만 동작하는 확장 메서드를 정의한 예이다.
http://www.csharpstudy.com/CSharp/CSharp-extension-method.aspx
다른 예제
public bool Contains(String value);
해당 문자열에 value 값이 포함되있는지 비교한다.
해당 키워드는 대소문자를 구문한다.
만약 대소문자를 비교하려면 StringExtensions 기능을 이용하여 만들어줘야한다.
(C#은 Extensions를 이용하여 객체 내부의 명시된 클래스를 사용하여 기능을 확장을 정의할 수 있다. )
[출처] C# 웹 개발자를 위한 Scala: Part 2|작성자 futurewave
이렇게 대소문자 구분 무시
반응형
'프로그래밍(Programming) > C#' 카테고리의 다른 글
제너릭의 장점과 boxing & unboxing (0) | 2017.09.08 |
---|---|
using 과 Dispose() (0) | 2017.07.19 |
프로퍼티 value (0) | 2015.11.17 |
정적 생성자가 호출되는 시점 (0) | 2015.11.14 |
AssemblyInfo.cs (0) | 2015.11.11 |