C 中 和equals的區別

2022-02-08 08:35:02 字數 2773 閱讀 3442

不想說太多,直接上**,這兩個就沒什麼聯絡,有自己獨立的規則。聯絡在一起其實不利於記憶。

下面是測試**

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...