【发布时间】:2015-10-27 08:12:08
【问题描述】:
考虑这段代码:
static int x2 = 10;
public static void Main()
{
short y = 10;
Console.WriteLine(y.Equals(x2)); //False
Console.Read();
}
为什么y.Equals(x2) 返回false?
【问题讨论】:
-
来自文档; 如果定义了 obj 参数和
Int16之间的隐式转换,并且该参数未键入为Object,编译器将执行隐式转换并调用Equals(Int16)方法。否则,他们调用Equals(Object)方法,如果其 obj 参数不是Int16值,则该方法总是返回false。 -
不,这不是我的问题
-
一个int不短:请看这个:blog.coverity.com/2014/01/13/inconsistent-equality