더북(TheBook)

49.1 확장 메서드

확장 메서드(extension method)는 원본 형식을 변경하지 않고 이미 있는 형식에 추가로 기능을 덧붙일 수 있습니다. 확장 메서드는 이미 만들어 있는 클래스 기능을 확장하고, 클래스와 구조체, 인터페이스에서 사용할 수 있습니다. 특히 봉인(sealed) 클래스는 상속이 불가능하므로 봉인 클래스에 새로운 메서드를 적용하기가 유용합니다.

확장 메서드는 static 키워드가 붙은 클래스에 static 메서드로 만들어집니다. 이때 반드시 동일한 네임스페이스를 참조해야 합니다. 확장 메서드의 첫 번째 매개변수에 this 키워드를 지정하여 확장 메서드를 사용할 개체 형식을 선택할 수 있습니다. 확장 메서드를 사용하면 같은 네임스페이스의 모든 클래스에서 해당 확장 메서드를 호출할 수 있는데, 확장 메서드는 이미 완성된 기존 형식에 새로운 메서드를 추가하는 방법으로 사용합니다.

확장 메서드의 메서드 시그니처는 다음과 같이 표현합니다. 첫 번째 매개변수는 직접 넘겨주는 것이 아닌 정적 메서드로 호출할 개체 형식을 표현합니다.

> public static void MethodName(this object obj, int i) { }
> public static void MethodName(this string str, int i) { }

확장 메서드 만들기를 정리하면 다음과 같습니다.

정적(static) 클래스에 정적(static) 메서드로 구현합니다.

첫 번째 메서드 매개변수에 this 키워드를 붙입니다.

같은 범위(scope)를 같은 네임스페이스에서 호출할 수 있습니다.

확장 메서드도 오버로드가 가능합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.