2010-03-07 118 views

回答

8

在對象的實例上調用擴展方法。

myObj.ExtensionMethod(); 

如果你有一個靜態類,你不能有它的一個實例。因此,沒有什麼可以調用擴展方法。

+0

感謝您的回答。這是一個恥辱,但不是一個巨大的損失。 – dotnetdev 2010-03-07 23:52:39

5

因爲設計中的extension method必須將它正在擴展的類的實例作爲其第一個參數進行擴展。顯然你不能傳遞一個文件的實例,因爲它是一個靜態類,不能有實例。

5

反過來說,如果您查看definition of any extension method,則第一個參數始終是關鍵字this所證明的對象的實例。邏輯上,這種行爲不能在靜態類上工作,因爲沒有實例存在。

擴展方法的樣本 - 看到第一個參數此

public static class MyExtensions 
{ 
    public static int WordCount(this String str) 
    { 
     return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length; 
    } 
} 
相關問題