반응형
소개
확장 메서드(Extension Method)는 C# 3.0부터 지원하는 static 메서드이다. 확장 메서드는 클래스, 구조체, 인터페이스 등에 적용될 수 있다. 확장 메서드를 사용하면 클래스를 직접 변경하지 않고도 클래스 외부에서 정의함으로써 기능을 확장한 효과를 얻는다.
확장 메서드는 static class 안에 static method로 정의한다. 첫 번째 매개변수는 확장 메서드가 사용될 타입을 지정하며 매개변수 앞에 this 키워드를 사용한다. 그다음 매개변수들을 정의하여 메서드 사용 시 받는 매개변수를 정의한다.
예제
Country enum 정의
public enum Country
{
KOR, USA, GBR, UKR, NOR, RUS
}
Extensions 클래스에 Name 확장 메서드 정의
static class Extensions
{
public static string Name(this Country country) => country switch
{
Country.KOR => "한국",
Country.USA => "미국",
Country.UKR => "우크라이나",
Country.GBR => "영국",
Country.NOR => "노르웨이",
_ => string.Empty
};
}
실행 코드
Country[] countries = { Country.KOR, Country.USA, Country.GBR, Country.UKR, Country.NOR, Country.RUS };
foreach(Country country in countries)
{
Console.WriteLine($"{country.ToString()} : {country.Name()}");
}
출력
KOR : 한국
USA : 미국
GBR : 영국
UKR : 우크라이나
NOR : 노르웨이
RUS :
Name 확장메서드에 RUS에 대해서 정의를 하지 않아 빈 값이 나온 걸 확인할 수 있다. 그 외 나머지 enum에 대해서는 정의되어 있는 값들이 정상적으로 출력되고 있는 모습을 볼 수 있다. 개인적으로 Extension 클래스를 만들어 확장 메서드를 따로 관리하는 포인트에서 편하다고 느끼고 있다.
반응형
'Programming > C# & .NET' 카테고리의 다른 글
[C#] XML 직렬화, 역직렬화 (Serialize, Deserialize) (0) | 2023.01.06 |
---|---|
[C#] switch 식 (1) | 2022.12.02 |
[C#] List 정렬 총정리(기본정렬, 여러개 정렬) (0) | 2022.10.18 |
[C#] JsonConvert null 해결방법 (1) | 2022.10.13 |
[C#] Json 직렬화/역직렬화 속성 제외하는 방법 (1) | 2022.09.14 |
댓글