一、今天在论坛中看到一位朋友提出这样的一个问题,问题大致: staticvoidMain(string[]args) { objectm1=1; objectm2=1; Console.WriteLine(m1==m2); Console.WriteLine(m1.Equals(m2)); Console.Read(); } 大家先不要去VisualStudio中运行这段代码,先猜猜此段代码的运行结果是怎样的,如果你猜测的结果和运行出来的结果完全是一致并且你也知道原因的话,那这篇文章下面的内容就没必要看下去了,如果你对运行出来的结果表示不理解的话,那请继续看下面内容的分析,相信看完你绝对可以解除你的疑惑。 二、==与Equals的区别上面问题的运行结果为: 对于结果为什么是这样的呢?这主要涉及到==与Equals方法的区别的,再讲两者的区别前,大家首先要明确——C#中有两种不同的相等:引用相等和值相等。值相等意味着两个对象保护相同的值,例如,两个值为1的整数就具有值相等性;引用相等意味着要比较的不是两个对象,而是两个对象的引用,且两者引用的是同一个对象。若要检查引用相等性,应使用ReferenceEquals。若要检查值相等性,请使用Equals(详细内容可以参考:北京看白癜风医院在哪北京哪家医院治白癜风疗效好
|