比較字串相等

2021-05-28 04:50:19 字數 1938 閱讀 5195

equals() 和運算子 ==

c# 中有兩種不同的相等:引用相等和值相等。值相等是大家普遍理解的意義上的相等:它意味著兩個物件包含相同的值。例如,兩個值為 2 的整數具有值相等性。引用相等意味著要比較的不是兩個物件,而是兩個物件引用,且兩者引用的是同乙個物件。這可以通過簡單的賦值來實現,如下面的示例所示:

system.object a = new system.object();

system.object b = a;

system.object.referenceequals(a, b); //returns true

在上面的**中,只存在乙個物件,但存在對該物件的多個引用:a 和 b。由於它們引用的是同乙個物件,因此具有引用相等性。如果兩個物件具有引用相等性,則它們也具有值相等性,但是值相等性不能保證引用相等性。

若要檢查引用相等性,應使用 referenceequals。若要檢查值相等性,請使用 equals。

運算子 ==

對於預定義的值型別,如果運算元的值相等,則相等運算子 (==) 返回 true,否則返回false。對於string以外的引用型別,如果兩個運算元引用同乙個物件,則==返回true。對於string型別,==比較字串的值

對於內建值型別,==判斷的是兩個物件的代數值是否相等。它會根據需要自動進行必要的型別轉換,並根據兩個物件的值是否相等返回true或者false。例如:

int x = 100;

double y = 100;

if (x == y)

response.write("x==y!"); //x==y

而對於使用者定義的值型別,如果沒有過載==操作符,==將是不能夠使用的。

例如:struct userstruct1;

userstruct1 a;

userstruct1 b;

if(a == b)

console.writeline(「can == reach this far?」)

上面的這段**是不能夠通過編譯的。可以通過過載使==作用於使用者定義的值型別。

對於引用型別,== 預設的行為與referenceequals的行為相同,僅有兩個物件指向同乙個reference的時候才返回true。

equals():

equals方法對於值型別和引用型別的定義不同,對於值型別,型別相同,並且數值相同(對於struct的每個成員都必須相同),則equals返回true,否則返回false。而對於引用型別,預設的行為與referenceequals的行為相同,僅有兩個物件指向同乙個reference的時候才返回true。可以根據需要對equals進行過載,例如string類的equals用於判斷兩個字串的內容是否相等。

stringbuilder a = new stringbuilder();

string s1 = a.tostring();

string s2 = "the test a";

if (s2 == s1) //為真,因為s2,s1內容相等。string類的==與equals的行為相同,判斷兩個字串的內容是否相等

response.write("== returns true");

if (object.equals(s2, s1)) //為真,string類過載了equals,用於判斷兩個字串的內容是否相等

response.write("equals returns true");

if (object.referenceequals(s2, s1)) //為假,因為s2,s1並不是指向同乙個物件

response.write("referenceequals returns true");

注:對於string類,直接宣告s1 = 「the test a」的話,輸出結果將包含 "referenceequals returns true",因為預設的,string對於宣告的相同的字串在堆上只保留乙個copy,所以s1與s2將會指向相同的reference。

字串相等比較

如果說現在要是有兩個int型的變數判斷其相等可以使用 完成。範例 觀察基本資料型別比較 public class string demo 結果 ture 那麼如果說現在在string類的物件上使用了 呢?範例 觀察string直接使用 比較 public class string demo fals...

shell字串比較,相等不相等

bin sh 測試各種字串比較操作。shell中對變數的值新增單引號,爽引號和不新增的區別 對型別來說是無關的,即不是新增了引號就變成了字串型別,單引號不對相關量進行替換,如不對 符號解釋成變數引用,從而用對應變數的值替代,雙引號則會進行替代 author tenfyguo a 1 b 2 echo...

Shell字串比較相等 不相等方法小結

bin sh 測試各種字串比較操作。shell中對變數的值新增單引號,爽引號和不新增的區別 對型別來說是無關的,即不是新增了引號就變成了字串型別,單引號不對相關量進行替換,如不對 符號解釋成變數引用,從而用對應變數的值替代,雙引號則會進行替代 author tenfyguo a 1 b 2 echo...