프로그래밍/C#

[C#] Extension 메소드 사용하기

흔한티벳여우 2024. 5. 8. 15:33
반응형

C# 프로그래밍에서 Extension 메소드(확장 메소드)는 기존의 타입에 새로운 메소드를 추가할 수 있게 해주는 강력한 기능입니다. 이 기능은 특히 기존 라이브러리나 프레임워크를 수정하지 않고도 해당 타입의 기능을 확장하고 싶을 때 유용합니다.

 

1. Extension 메소드란 무엇인가?

Extension 메소드는 정적 메소드로 선언되지만, 특정 타입의 인스턴스 메소드처럼 사용될 수 있습니다. 이 메소드는 this 키워드를 사용해 첫 번째 파라미터에 기존 타입을 명시함으로써 해당 타입의 인스턴스에 대해 호출할 수 있게 됩니다.


2. Extension 메소드 구현 방법

Extension 메소드를 구현하려면 다음과 같은 단계를 따르세요:

  1. 정적 클래스 생성: Extension 메소드는 정적 클래스 내부에 정의되어야 합니다.
  2. 메소드 선언: 메소드를 정적으로 선언하고, 첫 번째 파라미터에는 this 키워드와 확장하고자 하는 타입을 명시합니다.

 

3. 예제: 문자열의 첫 글자를 대문자로 변환하는 Extension 메소드

아래의 예제는 string 타입에 대해 첫 글자를 대문자로 만드는 Extension 메소드를 구현한 것입니다. 이 메소드는 문자열의 첫 글자가 이미 대문자인 경우에는 아무 작업도 수행하지 않습니다.

public static class StringExtensions
{
    public static string CapitalizeFirstLetter(this string input)
    {
        if (string.IsNullOrEmpty(input))
            return input;
        return char.ToUpper(input[0]) + input.Substring(1);
    }
}

 

사용 예제

string example = "hello world";
string capitalized = example.CapitalizeFirstLetter();
Console.WriteLine(capitalized);  // 출력: "Hello world"

 

4. 주의 사항

  • Extension 메소드는 인스턴스 메소드보다 우선 순위가 낮기 때문에, 같은 이름과 시그니처를 가진 인스턴스 메소드가 있는 경우, Extension 메소드는 무시됩니다.
  • Extension 메소드는 상속을 통해 오버라이드할 수 없습니다. 즉, 확장하는 타입의 메소드를 '재정의'할 수는 없습니다.

5. 활용 가능성

Extension 메소드는 LINQ에서 널리 사용되며, IEnumerable<T>과 같은 컬렉션을 다룰 때 매우 유용합니다. 예를 들어, .Where(), .Select(), .OrderBy() 등의 메소드는 모두 IEnumerable<T>에 대한 Extension 메소드입니다.

 

 

반응형