「==」和equal的比較

 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             if (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             return false;
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, string str2)
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     }
View Code

 

判斷類的兩個實例的值是否相等,須要重寫Equal方法。ide

在值類型中:this

「==」和equal相同,只比較「值的內容」是否相等。spa

在引用類型中:code

「==」:比較的是類的引用地址。此處string比較特殊,比較的是值,由於C#內部重寫了該方法,用的是equal。blog

「equal」:始終比較的是「值的內容get

相關文章
相關標籤/搜索