반응형
C# 프로그래밍에서 Extension 메소드(확장 메소드)는 기존의 타입에 새로운 메소드를 추가할 수 있게 해주는 강력한 기능입니다. 이 기능은 특히 기존 라이브러리나 프레임워크를 수정하지 않고도 해당 타입의 기능을 확장하고 싶을 때 유용합니다.
1. Extension 메소드란 무엇인가?
Extension 메소드는 정적 메소드로 선언되지만, 특정 타입의 인스턴스 메소드처럼 사용될 수 있습니다. 이 메소드는 this 키워드를 사용해 첫 번째 파라미터에 기존 타입을 명시함으로써 해당 타입의 인스턴스에 대해 호출할 수 있게 됩니다.
2. Extension 메소드 구현 방법
Extension 메소드를 구현하려면 다음과 같은 단계를 따르세요:
- 정적 클래스 생성: Extension 메소드는 정적 클래스 내부에 정의되어야 합니다.
- 메소드 선언: 메소드를 정적으로 선언하고, 첫 번째 파라미터에는 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 메소드입니다.
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] Task.Yield 사용법 및 활용 예제 (1) | 2024.09.03 |
---|---|
[C#] C#에서 사각형 내에 포함된 선 추출하기 (0) | 2024.08.07 |
[C#] SkipWhile & TakeWhile (0) | 2023.08.18 |
[C#] 디자인 패턴 - Builder Pattern (0) | 2023.08.15 |
[C#] 디자인패턴 - Abstract Factory Pattern (0) | 2023.08.15 |