我想知道C#中擴展方法的行爲。請看下面的例子:C#擴展方法不能按預期工作 - 請參閱示例
static string ExtendedToString(this object oObj)
{
return "Object";
}
static string ExtendedToString(this Array oArray)
{
return "Array";
}
// Example 1: int array - working as expected.
int[] o = new int[] { 1, 2, 3 };
o.ExtendedToString(); // returns "Array"
// Example 2: array as object - did not expect the result.
object o = new int[] { 1, 2, 3 };
o.ExtendedToString(); // returns "Object"
爲什麼(在最後一種情況)被稱爲對象的擴展方法,而不是1爲int []?
有道理。這很奇怪,因爲它看起來像一個虛擬的方法,但它不是 - 這是令人困惑的部分。謝謝。 – Krumelur 2011-04-06 12:32:08
@Krumelur,請記住,擴展方法只是語法糖來調用靜態方法 – 2011-04-06 12:34:27
是的。這就是我的意思:在使用它們時它們看起來不像靜力學。 – Krumelur 2011-04-06 12:45:05