}
}
}
测试结果:
说明根据传入实参的类型,优先匹配最相近的形参列表的方法。
那么我们将Add(int a ,int b)这个方法注释掉,那么会调用哪个方法?
为什么花费那么多口舌说明上面的问题,那么现在看一下Int32反编译的代码:
Int32有一个自己的Equals方法,有一个重写的Equals方法,如果两个int类型的值进行比较,Equals和==是一样的,因为它优先调用了下面的Equals方法,如果是下面的代码,则会选择重写的Equals方法。
复制代码
static void Main(string[] args)
{
int a = 1;
object b = 1;
Console.WriteLine(a.Equals(b));
Console.Read();
}
可见,对于值类型的Equals和==是一样的。
引用类型
在类(引用类型)上,两种 Object.Equals(Object) 方法的默认实现均执行引用相等性比较,而不是值相等性检查。 当实施者重写虚方法时,目的是为了为其指定值相等性语义。
即使类不重载 == 和 != 运算符,也可以将这些运算符与类一起使用。 但是,默认行为是执行引用相等性检查。 在类中,如果您重载 Equals 方法,则应重载 == 和 != 运算符,但这并不是必需的。













