“==”和equal的比較
阿新 • • 發佈:2018-11-26
mar one returns param cee str ram color isnull
1 class People 2 { 3 public string A { get; set; } 4 public string B { get; set; } 5 public string C { get; set; } 6 7 8 public override bool Equals(object obj) 9 { 10 11 if (obj == null) 12 return false; 13 ifView Code(ReferenceEquals(obj, this)) 14 return true; 15 People p = obj as People; 16 if (p == null) 17 return false; 18 if (p.A.Equals(this.A) && p.B.Equals(this.B) && p.C.Equals(this.C)) 19 return true; 20 returnfalse; 21 } 22 /// <summary> 23 /// 忽略空格和null,進行比較。 24 /// </summary> 25 /// <param name="str1"></param> 26 /// <param name="str2"></param> 27 /// <returns></returns> 28 private bool CompareTwo(string str1, stringstr2) 29 { 30 if (string.IsNullOrEmpty(str1)) 31 str1 = ""; 32 if (string.IsNullOrEmpty(str2)) 33 str2 = ""; 34 return str1.Trim().Equals(str2.Trim()); 35 36 } 37 38 39 }
判斷類的兩個實例的值是否相等,需要重寫Equal方法。
在值類型中:
“==”和equal相同,只比較“值的內容”是否相等。
在引用類型中:
“==”:比較的是類的引用地址。此處string比較特殊,比較的是值,因為C#內部重寫了該方法,用的是equal。
“equal”:始終比較的是“值的內容”
“==”和equal的比較