1. 程式人生 > >ReferenceEquals 靜態Equals equals == 的區別

ReferenceEquals 靜態Equals equals == 的區別

System.Object對於ReferenceEquals、Equals(靜態方法就是呼叫虛方法,結果一樣)和==,定義的都是比較引用但三者的不同之處在於,RefEquals是靜態方法,不可被重寫,而Equals是虛方法,可以在派生類中被重寫,==運算子可以被過載。
所以對於像int、double這樣繼承自System.ValueType的型別(struct也一樣),在ValueType這一級就已經重寫了Equals和==,也就是值型別判斷相等。
System.String型別也已經過載了==操作符,而事實上,如果你比較兩個相同的字串,它們也會是RefEquals為真的,這是.NET對於string型別的特殊處理