2014-01-11 31 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); 
    } 
} 

它允許你進行這樣的電話:

string myString = controller.Mrthod1(); 

如果去除this關鍵字,你需要打電話Mrthod1,你需要指定類也是:

string myString = MyClass.Mrthod1(controller); 
相關問題