반응형
아래 글은 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)를 같은 네임스페이스에서 호출할 수 있습니다.
- 확장 메서드도 오버로드가 가능합니다.
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
C# 동적 형식(Dynamic) (0) | 2021.06.14 |
---|---|
닷넷 프레임워크와 닷넷 코어 차이 (0) | 2021.06.13 |
C# 제네릭(Generic) 클래스 만들기 (0) | 2021.06.12 |
C# 개체(Object)와 개체지향프로그래밍 (0) | 2021.06.11 |
C# 특성(Attribute)과 리플렉션(Reflection) 맛보기 (0) | 2021.06.10 |