본문 바로가기
프로그래밍언어 & 프레임워크/C#

C# 확장 메서드(Extension Method) 만들기

by 공부하는개미 2021. 6. 13.
반응형

 

 

 

아래 글은 C# 확장 메서드 만들기 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.

 

 

 

📃 참고자료

 

  • C# 교과서(길벗 출판사) - 49단원 확장 메서드 만들기 662 ~ 665페이지
  • 유튜브 채널 VisualAcademy [C# 교과서 마스터하기 49. 확장 메서드 만들기]
  • 닷넷코리아 (https://www.dotnetkorea.com/)

 

 

 

 

 

 

https://www.youtube.com/watch?v=ycUhM86Qf3Q 

 

 

 

 

 

✳ 확장 메서드(Extension Method)

 

  • 원본 형식을 변경하지 않고 이미 있는 형식에 추가로 기능을 덧붙일 수 있습니다.
  • 확장 메서드는 이미 만들어 있는 클래스 기능을 확장하고, 클래스와 구조체, 인터페이스에서 사용할 수 있습니다.
  • 특히 봉인(sealed) 클래스는 상속이 불가능하므로 봉인 클래스에 새로운 메서드를 적용하기가 유용합니다.

 

 

 

 

 

 

✳ 예제코드

namespace 확장메서드 // 기존의 형식이나 구축된 형식을 추가 메서드로 확장
{
    static class E
    {
        public static void EF(this object obj, int i) { } // 정수
        public static void EF(this object obj, string i) { } // 문자열
    }
    class A { }
    class B
    {
        public void EF(int i) { } // 일반 메서드
    }
    class C
    {
        public void EF(object obj) { } // 일반 메서드
    }
    class 확장메서드
    {
        static void Main(string[] args)
        {
            A a = new A(); a.EF(10); a.EF("안녕"); // 둘 다 확장 메서드
            B b = new B(); b.EF(100); b.EF("안녕"); // 일반, 확장 메서드
            C c = new C(); c.EF(1000); c.EF("안녕"); // 둘 다 일반 메서드
        }
    }
}

 

 

  • 확장 메서드는 static 키워드가 붙은 클래스에 static 메서드로 만들어집니다.
    * 
    이 때 반드시 동일한 네임스페이스를 참조해야 합니다.
  • 확장 메서드의 첫 번째 매개변수에 this 키워드를 지정하여 확장 메서드를 사용할 개체 형식을 선택할 수 있습니다.
  • 확장 메서드를 사용하면 같은 네임스페이스의 모든 클래스에서 해당 확장 메서드를 호출 할 수 있는데,
    확장 메서드는 이미 완성된 기존 형식에 새로운 메서드를 추가하는 방법으로 사용합니다.

 

 

 

 

✳ 확장 메서드개념 간단 정리

 

  • 정적(static)클래스에 정적(static) 메서드로 구현합니다.
  • 첫 번째 메서드 매개변수에 this 키워드를 붙입니다.
  • 같은 범위(scope)를 같은 네임스페이스에서 호출할 수 있습니다.
  • 확장 메서드도 오버로드가 가능합니다.
반응형