2012-09-28 37 views

回答

7

對於結構沒有裝箱,可以直接呼叫所有類型(而不是虛擬呼叫)。

struct MyStruct 
{ 
    public int v; 
    public override bool Equals(Object other) {} 
} 

如果不提供需要MYSTRUCT比MYSTRUCT將不得不盒裝每次調用myFirst.Equals(myOther)明確的方法。如果你提供Equals(MyStruct other)比編譯器會選擇該方法,而不是更通用的Equals(Object),從而避免結構的裝箱。

對於所有類型,您可以提供很簡單的Equals(MyType)實現,因爲您已經知道該類型。如果方法不是虛擬的,編譯器/ JIT也可以更好地優化調用,因爲更具體的版本不需要是虛擬的。

相關問題