c# 확장 방법 - msdn

2558 단어 C#
확장 방법은 기존 형식에 '추가' 방법을 추가할 수 있으며, 새로운 파생 형식을 만들거나, 다시 컴파일하거나, 다른 방식으로 원시 형식을 수정할 필요가 없습니다.확장 방법은 특수한 정적 방법이지만 확장 유형의 실례적인 방법처럼 호출할 수 있다.C# 및 Visual Basic으로 작성된 클라이언트 코드의 경우 호출 확장 방법과 호출 유형에서 실제로 정의된 방법 사이에는 뚜렷한 차이가 없습니다.
확장 메서드 코드 작성:
namespace ExtensionMethods

{

    public static class MyExtensions

    {

        public static int WordCount(this String str)

        {

            return str.Split(new char[] { ' ', '.', '?' }, 

                             StringSplitOptions.RemoveEmptyEntries).Length;

        }

    }   

}

1. 정적 방법 필요
2. 첫 번째 파라미터는 어떤 유형에 확장 방법을 추가하는가(this 유형 이름 참조 이름)
호출 시 네임스페이스 가져오기
using ExtensionMethods;

호출 확장 방법과 호출 유형에서 실제 정의된 방법 사이에는 뚜렷한 차이가 없다.
string s = "Hello Extension Methods";

int i = s.WordCount();

주의: 코드에서 이 확장 방법을 실례적인 문법으로 호출할 수 있습니다.그러나 컴파일러가 생성한 중간 언어(IL)는 코드를 정적 방법에 대한 호출로 변환합니다.따라서 봉인 원칙을 제대로 위반한 것은 아니다.실제로 확장 방법은 확장된 형식의 개인 변수에 접근할 수 없습니다.
확장 방법을 사용하여 클래스나 인터페이스를 확장할 수 있지만 확장 방법을 다시 쓸 수 없습니다.인터페이스나 클래스 방법과 같은 이름과 서명을 가진 확장 방법은 영원히 호출되지 않습니다.컴파일할 때, 확장 방법의 우선순위는 항상 형식 자체에서 정의한 실례 방법보다 낮다.다시 말하면, 어떤 유형에Process (int i) 라는 방법이 있고, 같은 서명을 가진 확장 방법이 있다면, 컴파일러는 항상 이 실례 방법에 귀속된다.컴파일러가 방법을 호출할 때, 먼저 이 유형의 실례적인 방법에서 일치하는 방법을 찾는다.일치하는 방법을 찾지 못하면, 컴파일러는 이 유형에 정의된 확장 방법을 검색하고, 첫 번째 확장 방법에 연결합니다.
보통 부득이한 상황에서만 확장 방법을 실현하고 조심스럽게 실현하는 것을 권장한다.

좋은 웹페이지 즐겨찾기