본문 바로가기
Programming/C# & .NET

[C#] 확장메서드 (Extension Method)

by Kor-IT 2022. 10. 28.
반응형

C# 확장 메서드(Extension Method)

 

소개


확장 메서드(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 클래스를 만들어 확장 메서드를 따로 관리하는 포인트에서 편하다고 느끼고 있다.

 

 

 

 

 

반응형

댓글