2014-05-15 7 views
1

저는 하나의 세부 사항을 제외하고 확장 방법의 개념을 이해한다고 생각합니다. 매개 변수에 this을 사용하여 임의의 static 메서드를 사용하여 무작위 (정적) 클래스를 만들 수 있습니다. 이 매개 변수는 확장하려는 클래스의 유형과 일치해야한다고 생각합니다 (또는 상속받는 클래스의 유형). 예 :.NET은 확장 메서드를 찾는 위치를 어떻게 알 수 있습니까?

public static class MyExtendedMethods 
{ 
    public static int square(this int num) 
    { 
     int result = 0; 
     result = num * num; 
     return result; 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     int myNum = 3; 
     myNum = myNum.square(); 
     Console.WriteLine(myNum); 
    } 
} 

방법 .NET이 클래스 및 방법 (MyExtendedMethods.square())을 찾을 수 알고 있나요? 나는 어떤 방식 으로든 관련된 수업을 보지 못합니다. 가능한 확장을 위해 프로젝트의 모든 수업을 조사하고 있습니까?

+5

로 전화를 대체합니다. –

+1

난 그냥 여기서 추측이지만, C#은 심지어 당신의 응용 프로그램을 실행하기 전에 모든 코드를 검사하는 컴파일러를 가지고 있기 때문에 컴파일러가 확장 메서드 집계의 일부 형식을 수행하는 논리적 (또는 적어도 그럴듯한 것) 매번 가능한 모든 위치를 계속 조사해야합니다. 어쨌든 사용 된 모든 코드를 탐색해야하기 때문에 확장 메서드를 보았을 때 기억하지 못할 이유가 없습니다. 그러나 이것은 지식이 많은 대답이 아니라 교양있는 추측 일뿐입니다. – Flater

+1

http://www.hanselman.com/blog/HowDoExtensionMethodsWorkAndWhyWasANewCLRNotRequired.aspx – Abhitalks

답변

4

'System.Linq 사용'과 같이 파일의 맨 위에 선언 된 네임 스페이스 내부에서 정적 클래스를 찾습니다. (이것은 현재의 공간에서 아무것도 찾을 수없는 경우) 는 그런 다음 단순히 정적 클래스는 접근 네임 스페이스에 있어야합니다

MyExtendedMethods.square 
관련 문제