2012-10-29 85 views
1

當我注意到虛函數Match時,我正在實現我自己的屬性。 Match的正常實現是調用Equals,那爲什麼它存在於第一位呢?.Net Attribute.Match vs .Equals?

文檔說爲Match

以下當在派生類重寫時,返回一個值,指示 此實例是否等於指定的對象。

文檔說以下爲Equals

返回一個值,該值指示此實例是否等於 指定的對象。

+1

[Match](http://msdn.microsoft.com/en-us/library/system.attribute.match.aspx)備註部分的MSDN文檔給出了一個合理的示例。 – vcsjones

回答

1

remarks section in MSDN該方法解釋它們的區別是:

該方法確定是否一個屬性等於另一個。其默認實現與Equals相同,後者執行值和參考比較。重寫此方法以實現對屬性值(如標誌或位域)的支持,這些屬性值由自身有意義的組件組成。

例如,考慮一個屬性,它的值是一個二進制字段,分成一個標誌的位字段。此屬性的兩個實例共有一個標誌,而所有其他標誌不同。 Equals方法不能確定這兩個實例具有相同的標誌設置,但Match方法可以。

+1

換句話說,[Attribute.Match()](http://msdn.microsoft.com/en-us/library/system.attribute.match.aspx)是一種抽象方法。如果'Equals()'不夠,你應該用你自己的實現覆蓋它。 –

0

Match文檔:

考慮它的值是一個二進制領域劃分爲標誌的位域的屬性。此屬性的兩個實例共有一個標誌,而所有其他標誌不同。 Equals方法不能確定這兩個實例具有相同的標誌設置,但Match方法可以。