1 minute read

확장 Method 개념


기존 클래스를 수정하지 않고 새로운 매소드를 추가하는 기능입니다.
일반적으로 확장 메소드는 기존 클래스를 확장하는 Static 메소드 이며, 기존 객체를 사용하여 호출할 수 있지만 Static클래스에 정의됩니다.

간단하게 설명하자면….스마트폰에 폰케이스나 필름 등 악세사리를 추가하는것과 비슷합니다. 스마트폰을 분해하지 않고도 좋은 기능을 추가할 수 있습니다.

주로 기존 코드를 수정하지 않고 기능을 확장할때, 예를들어 이미 정의된 클래스 또는 라이브러리에 새로운 기능을 추가할 때 사용됩니다.(당연하게도…)


예제


[샘플 코드]

public static class Extension
{
  public static string MakeFirstLetterUpperCase(string input)
  {
    if(string.IsNullOrEmpty(input)) return input;

    return char.ToUpper(input[0] + input.Substring(1));
  }
}


[전체 코드]

using System;

public static class StringExtension
{
    public static string MakeFirstLetterUpperCase(this string input)
    {
        if (string.IsNullOrEmpty(input)) return input;

        return char.ToUpper(input[0]) + input.Substring(1);
    }
}

public class Program
{
    public static void Main()
    {
        string input = "hello, world!";
        string output = input.MakeFirstLetterUpperCase();
        Console.WriteLine(output); // Output: "Hello, world!"
    }
}


[잘못된 사용법]
확장 메소드를 잘못 사용하는 경우도 있습니다.
아래와 같이 Static메소드처럼 호출 하는것이 잘못 사용하는것이며, 상기처럼 인스턴스 메소드 처럼 호출되어야 합니다.

public static void Main()
{
  string input = "hello, world!";
  string output = StringExtension.MakeFirstLetterUpperCase(example, "Hello, "); // 정적 메서드로 호출했음.
  Console.WriteLine(output); // Output: "Hello, world!"
}


주의 사항

  • Extension Method는 정적 클래스에 정의되어야 합니다.
  • 메서드의 첫 번째 매개 변수는 this 키워드와 함께 사용되어야 합니다.
  • 확장 메서드를 사용하는 것은 해당 클래스를 직접 수정하는 것보다 선호되지 않을 수 있습니다. 이는 클래스가 개방형으로 설계되어 있지 않고, 확장 메서드를 사용하면 코드의 가독성이 떨어질 수 있기 때문입니다.


Top