不想說太多,直接上**,這兩個就沒什麼聯絡,有自己獨立的規則。聯絡在一起其實不利於記憶。
下面是測試**
console.writeline("--equals和==的區別--");
console.writeline(
"1、對於值型別的資料");
console.writeline();
console.writeline(
"1.1、型別和數學上的值都相同的數");
console.writeline($
"(int)1 == (int)1 的結果是:");
console.writeline($
"(int)1).equals((int)1) 的結果是:");
console.writeline(
"1.2、對於型別不同但是數學上值相同的數");
console.writeline($
"(int)1 == (long)1 的結果是:");
console.writeline($
"(int)1 == (double)1 的結果是:");
console.writeline($
"(int)1 == (double)1.0 的結果是:");
console.writeline($
"(int)1 == (decimal)1 的結果是:");
console.writeline($
"(int)1 == (decimal)1.0 的結果是:");
console.writeline($
"((int)1).equals((long)1 的結果是:");
console.writeline();
console.writeline(
"2、對於引用型別的資料");
console.writeline();
console.writeline(
"2.1、在1.1的基礎上轉化為object再比較");
console.writeline($
"(object)(int)1 == (object)(int)1 的結果是:");
console.writeline($
"((object)(int)1).equals((object)(int)1 的結果是:");
console.writeline();
console.writeline(
"2.2、在1.2的基礎上轉化為object再比較");
console.writeline($
"(object)(int)1 == (object)(long)1 的結果是:");
console.writeline($
"((object)(int)1).equals((object)(long)1 的結果是:");
console.writeline();
console.readkey();
列印如下:
--equals和==的區別--
1、對於值型別的資料
1.1、型別和數學上的值都相同的數
(int)1 == (int)1 的結果是:true
(int)1).equals((int)1) 的結果是:true
1.2、對於型別不同但是數學上值相同的數
(int)1 == (long)1 的結果是:true
(int)1 == (double)1 的結果是:true
(int)1 == (double)1.0 的結果是:true
(int)1 == (decimal)1 的結果是:true
(int)1 == (decimal)1.0 的結果是:true
((int)1).equals((long)1 的結果是:false
2、對於引用型別的資料
2.1、在1.1的基礎上轉化為object再比較
(object)(int)1 == (object)(int)1 的結果是:false
((object)(int)1).equals((object)(int)1 的結果是:true
2.2、在1.2的基礎上轉化為object再比較
(object)(int)1 == (object)(long)1 的結果是:false
((object)(int)1).equals((object)(long)1 的結果是:false
還是給個說明吧:
equals具體的用發應該看型別自己的實現。
對於int型的比較**是這樣定義的:如果比較的是int型,返回使用==比較的結果;如果不是,先判斷是不是int型,不是直接返回false,是再返回使用==比較的結果。
int 的equals方法只支援int和object兩種,如果傳入其他型別,會自動轉化為object。如((int)1).equals((long)1 等價於 ((int)1).equals((object)(long)1
[__dynamicallyinvokable]public
override
bool equals(object
obj)
return
this == (int
)obj;
}[nonversionable]
[__dynamicallyinvokable]
public
bool equals(int
obj)
c 中「 」和Equals的區別
一 值型別的比較 對於值型別來說 兩者比較的都是 內容 是否相同,即值 是否一樣,很顯然此時兩者是劃等號的。int i 9 int j 9 console.writeline i j i j true console.writeline i.equals j i.equals j true 二 引用...
C 中 和Equals的區別
和equals比較的內容都是一致的,都是比較內容 equals 比較首位址是否相等 比較值是否相等 利用反編譯工具,檢視string原始碼,可以看到如下 從 中可以看出,string對 也進行了重寫,所以,在string型別 和equals的功能是一致的,也是進行值的比較,所以如下 的 string...
C 中「 」和equals 的區別
如以下 12 3456 789intage 25 short newage 25 console.writeline age newage true console.writeline newage.equals age false console.readline age newage返回true...