引用相等和值相等

2022-01-19 03:23:53 字數 523 閱讀 1874

相同的引用肯定有相同的值,但是相同值卻不一定有相同的引用

c# 中有兩種不同的相等:引用相等和值相等。值相等是大家普遍理解的意義上的相等:它意味著兩個物件包含相同的值。例如,兩個值為 2 的整數具有值相等性。引用相等意味著要比較的不是兩個物件,而是兩個物件引用,且兩者引用的是同乙個物件

在預設情況下equals只能在引用型別中用,但是在valuetype型別中已經重寫了equals方法,所以通常情況下equals方法既可以用於引用型別,也可以應用於值型別;在引用型別中equals方法比較的是引用相等,而在值型別中equals方法比較的是值相等。

在.net中,referenceequals()方法是專門用來表示引用相等的;

==運算子和equals()方法都可以用來表示引用相等和值相等。對於值型別而言, ==和equals()方法是一樣的,使用上沒有什麼區別。那麼重點是引用型別:

從效果上說,對於引用型別, ==運算子表示引用相等(string有運算子過載,除外),而equals()表示值相等。從效果上講,這個說法好像不算錯,網上也有這麼一種說法。

物件相等與不相等

看一段 var a function xx var c a var b a console.log c b false c和b是兩個單獨的物件,所以不相等 等同於1 var e 2var f 3 console.info e f 但是這種又是相等的 1 var ee 2var ee1 ee 3var...

Integer值判斷是否相等問題

今天發現了乙個奇怪的問題 integer allrightstotal 140 integer allrightslasttotal 140 if allrightstotal allrightsinit 最後得出的結論是 對於integer值比較有範圍規定 integer 型別的值在 128,12...

各類空值的相等判斷

null 和 undefined 比較 true null 和 undefined 比較 false null 和 0 比較 false null 和 0 比較 false undefined 和 0 比較 false undefined 和 0 比較 false 0 和 比較 true 0 和 比...