C# - 확장 함수

양규빈·2023년 7월 9일
0

C# 공부

목록 보기
7/30

개요

확장함수 : this
-상속을 이용한 클래스 확장이 불가능한 경우(sealed, 라이브러리 클래스 등등)
-static함수, static클래스만 사용 가능.

확장 메서드(Extension Method)는 이미 존재하는 클래스나 구조체의 기능을 확장하여 새로운 메서드를 추가할 수 있는 기능
확장 메서드는 기존 클래스의 코드를 변경하지 않고, 외부에서 메서드를 추가하는 방식으로 작성된다.

확장 메서드는 정적 클래스에 정적 메서드로 작성되며, 첫 번째 매개변수에 this 한정자를 사용하여 확장할 클래스나 구조체의 인스턴스를 지정한다.
this 한정자를 사용하여 해당 클래스의 인스턴스에 접근할 수 있게 됩니다.

확장 메서드의 장점은 다음과 같다.

  • 기존 클래스나 구조체의 코드를 변경하지 않고 새로운 기능을 추가할 수 있습니다.
  • 코드를 더 읽기 쉽고 간결하게 만들 수 있습니다.
  • LINQ와 같은 확장 메서드를 사용하는 라이브러리를 만들 수 있습니다.

코드 및 세부 내용

확장함수의 조건
static의 키워드를 써야 한다.

this 키워드를 입력하여
마치 sealed라는 키워드 안에 새로운 확장 함수를 만든 것처럼 구현.

Extiontion클래스에서 정의한 getNum2를 별도의 선언 없이 사용할 수 있게 된다.


int와 같은 자료형에도 this 키워드를 붙여서, 닷넷 프레임 워크에서 제공하는 라이브러리에 함수를 추가한 것처럼 만들 수 있다.

This 키워드가 라이브러리에 저장된 int 키워드의 맴버함수로 확장할 수 있도록 함.

string 역시도 마찬가지이다.
this를 이용하여, 맴버 함수로 확장이 가능하다.

즉, 변수에 직접 클래스를 호출할 수 있게 된다.

Tips. 메서드 자동완성.
존재하지 않은 메서드를 만들었을 때,
알트+엔터를 입력하면 메서드 자동생성으로, 해당 함수를 만들 수 있다.
파라미터를 가지고 있다면, 파라미터까지 입력받을 수 있는 함수를 정의한다.

확장함수는 Visual Studio 상에서 자동완성 기능으로 위에 보여지는 아이콘이 다르다.
오른쪽 설명에 (확장)이라는 키워드가 보인다.

profile
훌륭한 개발자를 꿈꾸는 중입니다

0개의 댓글