标签:技术 obj system 实例 .com http msdn blank void
一、== 与Equals()的区别:
1、实例:
代码:
static void Main(string[] args)
{
object m1 =1 ;
object m2 = 1;
Console.WriteLine(m1==m2);
Console.WriteLine(m1.Equals(m2));
Console.Read();
}
代码运行结果显示:
问题:同样是Object对象的比较,为何用“==”比较是false,而用“Equals()”比较是false
2、解释:
对于结果为什么是这样的呢?这主要涉及到==与Equals方法的区别的,再讲两者的区别前,大家首先要明确——C#中有两种不同的相等:引用相等和值相等。值相等意味着两个对象保护相同的值,例如,两个值为1的整数就具有值相等性;引用相等意味着要比较的不是两个对象,而是两个对象的引用,且两者引用的是同一个对象。若要检查引用相等性,应使用 ReferenceEquals。若要检查值相等性,请使用 Equals(详细内容可以参考:http://msdn.microsoft.com/zh-cn/library/ms173147(v=vs.90).aspx )。下面就看看它们直接的区别:
有了上面的理论基础,下面就具体分析上面程序为什么会是那样的结果:
二、typeof与GetType()的区别:
1、实例:
代码:
static void Main(string[] args)
{
object m1 = 1;
object m2 = 1;
// ValueType是引用类型,因为它是类,所以返回为false
Console.WriteLine(typeof(ValueType).IsValueType);
Console.WriteLine(m1.GetType().IsValueType);
Console.Read();
}
代码运行显示结果:
2、解释:
要想弄明白上面的运行结果,首先我们应该理解typeof与GetType的区别(之前我认为两个的都是一样的,这是一个误区),具体的区别为:
标签:技术 obj system 实例 .com http msdn blank void
原文地址:http://www.cnblogs.com/wenjieblog/p/6684216.html