2013-05-21 74 views
2

有多種方法可以使用標準方法的簽名作爲擴展名的擴展方法(沒有顯式地吸引靜態類)?例如:擴展方法替換C#中的標準方法

public class Foo 
{ 
    public override string ToString() 
    { 
     return "Own"; 
    } 
} 

public static class ExtensionsMethods 
{ 
    public static string ToString(this Foo foo) 
    { 
     return "Extensions"; 
    } 
} 

class Program 
{ 
    static void Main() 
    { 
     var foo = new Foo();    
     Console.WriteLine(foo.ToString()); // "Own" will be printed 
    } 
} 

我可以使用擴展 - ToString版本沒有明確呼籲類ExtensionsMethods

+0

沒有違法意圖,但你可以回答這個問題。檢查擴展方法msdn文檔。如果存在具有相同簽名的另一種方法,則不會調用它,直到可以調用現有方法爲止。擴展方法在被調用時獲得最低優先級。 –

回答