2017-05-26 100 views
2

給定2個變量類型(int, int)我該如何檢查它們是否代表相同的值?在C#中檢查值元組是否相等的正確方法是什麼?

E.g.

var a = (1, 2); 

var b = (1, 2); 

var c = a == b; // Error CS0019 Operator '==' cannot be applied to operands of type '(int, int)' and '(int, int)' 

這是什麼意思是在C#7中完成的?我應該改用.Equals還是以其他方式做?

回答

5

目前,你有兩個選擇:你可以使用.Equals,或者你可以寫出來的==比較長的手,對元素本身支持==:(For details of how Equals() works, check out the source

(a, b).Equals((c, d)) // true if a.Equals(c) && b.Equals(d) 

a == c && b == d // works if the types support == 

在某個階段,直接支持==將被添加到值元組中。 This is currently marked for a 7.X release。這將提供手動進行比較的元件的速記方式:

(a, b) == (c, d) // compiler converts to a == c && b == d 

換句話說,==不會被添加作爲操作者的元組;它將會是一個「編譯器技巧」,可以爲你比較元素。

相關問題