2014-01-11 6 views
0

이 두 메서드의 차이점은 무엇입니까?이 두 매개 변수가있는 두 메서드의 차이점

public static string Mrthod1(this Controller controller) 
{ 
    return GetStringDate(controller, null, null); 
} 

public static string Mrthod1(Controller controller) 
{ 
    return GetStringDate(controller, null, null); 
} 
+0

Ref. [확장 메서드 (C#)] (http://msdn.microsoft.com/en-us/library/bb383977.aspx) – user2864740

답변

3

첫번째는 extension method이다.

확장 방법은 새로운 파생 된 유형을 만들어 다시 컴파일하거나 원래 형식을 수정하지 않고 기존의 유형과 방법을 "추가"할 수 있습니다.

확장 방법은 정적 방법의 특별한 종류이다, 그러나이 확장 된 유형에 대한 인스턴스 메서드 인 것처럼 그들 불리는 :

그것은 가능 myController.Mrthod1()처럼 호출합니다.

this 전에 당신이 을 확장있어 입력 첫 번째 방법은 매개 변수 지정 :

그들의 첫 번째 매개 변수는 메소드가 작동하는 유형을 지정하고, 매개 변수가 this 수정 앞에는.

그래서 방법은 Controller 클래스의 확장 방법이며 모든 Controller 클래스에서 인스턴스 메서드 (모든 파생 클래스) 인스턴스 경우처럼 당신이 그것을 호출 할 수 있습니다.

1
public static string Mrthod1(this Controller controller) 
{ 
    return GetStringDate(controller, null, null); 
} 

은 확장 방법입니다.

public static class MyClass 
{ 
    public static string Mrthod1(this Controller controller) 
    { 
     return GetStringDate(controller, null, null); 
    } 
} 

이 같은 통화를 수행 할 수 있습니다 : 다음 this 키워드를 제거하고 Mrthod1를 호출하는 데 필요한 경우, 당신이

string myString = controller.Mrthod1(); 

해야합니다을이 항상 정적 클래스 안에있을 것입니다 클래스를 지정하십시오.

string myString = MyClass.Mrthod1(controller); 
관련 문제