확장함수 : this
-상속을 이용한 클래스 확장이 불가능한 경우(sealed, 라이브러리 클래스 등등)
-static함수, static클래스만 사용 가능.
확장 메서드(Extension Method)는 이미 존재하는 클래스나 구조체의 기능을 확장하여 새로운 메서드를 추가할 수 있는 기능
확장 메서드는 기존 클래스의 코드를 변경하지 않고, 외부에서 메서드를 추가하는 방식으로 작성된다.
확장 메서드는 정적 클래스에 정적 메서드로 작성되며, 첫 번째 매개변수에 this 한정자를 사용하여 확장할 클래스나 구조체의 인스턴스를 지정한다.
this 한정자를 사용하여 해당 클래스의 인스턴스에 접근할 수 있게 됩니다.
확장 메서드의 장점은 다음과 같다.
확장함수의 조건
static
의 키워드를 써야 한다.
this 키워드를 입력하여
마치 sealed라는 키워드 안에 새로운 확장 함수를 만든 것처럼 구현.
Extiontion클래스에서 정의한 getNum2를 별도의 선언 없이 사용할 수 있게 된다.
int와 같은 자료형에도 this
키워드를 붙여서, 닷넷 프레임 워크에서 제공하는 라이브러리에 함수를 추가한 것처럼 만들 수 있다.
This 키워드가 라이브러리에 저장된 int 키워드의 맴버함수로 확장할 수 있도록 함.
string 역시도 마찬가지이다.
this를 이용하여, 맴버 함수로 확장이 가능하다.
즉, 변수에 직접 클래스를 호출할 수 있게 된다.
Tips. 메서드 자동완성.
존재하지 않은 메서드를 만들었을 때,
알트+엔터
를 입력하면 메서드 자동생성으로, 해당 함수를 만들 수 있다.
파라미터를 가지고 있다면, 파라미터까지 입력받을 수 있는 함수를 정의한다.
확장함수는 Visual Studio 상에서 자동완성 기능으로 위에 보여지는 아이콘이 다르다.
오른쪽 설명에 (확장)이라는 키워드가 보인다.