c Equals和 的區別

2021-07-07 03:05:34 字數 1093 閱讀 6788

值型別是儲存在記憶體中的堆疊(以後簡稱棧),而引用型別的變數在棧中僅僅是儲存引用型別變數的位址,而其本身則儲存在堆中。

==操作比較的是兩個變數的值是否相等,對於引用型變數表示的是兩個變數在堆中儲存的位址是否相同,即棧中的內容是否相同。

equals操作表示的兩個變數是否是對同乙個物件的引用,即堆中的內容是否相同。而字串是乙個特殊的引用型型別,在c#語言中,過載了string 物件的很多方法方法(包括equals()方法),使string物件用起來就像是值型別一樣。

class program

); string str2 = new string(new char );

console.writeline(str1 == str2);//true

console.writeline(str1.equals(str2));//true

object obj1 = str1;

object obj2 = str2;

console.writeline(obj1 == obj2);//false(如果str1和str2不是new的則是true)

console.writeline(obj1.equals(obj2));//true

console.writeline("--------------------");

user u1 = new user("a");

user u2 = new user("a");

console.writeline(u1 == u2);//false

console.writeline(u1.equals(u2));//false

console.readline();

}}class user

}

總結:

(1)==比較的是值

(2)equals比較的是物件的引用

(3)string是特殊的引用型別

string str1 = 「abc」;

string str2 = 「abc」;

這樣寫兩種比較都是相等的,因為系統沒有給str2分配記憶體,只是把「abc」指向了str2,但是如果new了就是分配新記憶體了

c equals與 的區別

對於值型別,如果物件的值相等,則相等運算子 返回 true,否則返回 false。對於string 以外的引用型別,如果兩個物件引用同乙個物件,則 返回 true。對於 string 型別,比較字串的值。操作比較的是兩個變數的值是否相等。equals 方法比較的是兩個物件的內容是否一致 equals...

C Equals 和運算子 的區別

1.對於值型別 如果物件的值相等,則相等運算子 返回true,否則返回false 2.對於引用型別 equals方法比較的是兩個物件指向的記憶體空間內容是不是相同。也就是比較兩個引用型別是否是對同乙個物件的引用,即兩個物件的內容是否相等。對於string型別,比較字串的值 對於引用型別,操作符類似於...

mysql的 和 的區別 和 的區別

他們之間的區別用最直接的話來說就是 相當於對資料 加上 雙引號,相當於直接顯示資料。1 對傳入的引數視為字串,也就是它會預編譯select from user where name 比如我傳乙個csdn,那麼傳過來就是select from user where name csdn 2 將不會將傳入...