【问题标题】:Equals int and short c# returns false [duplicate]等于int和short c#返回false [重复]
【发布时间】: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

标签: c# .net compare equality


【解决方案1】:

Int16.Equals具体docs

返回值

如果 obj 是 Int16 的实例并且等于该实例的值,则为 true;否则为假。


这是我最初的答案,虽然它不适用于这里,但我已将其作为 .Equals 方法正在检查的内容的注释

来自docs

Equals(Object) 方法测试引用相等

【讨论】:

    【解决方案2】:

    the documentation,你可以读到使用的具体重载:

    返回一个值,指示此实例是否等于指定的对象。

    还有:

    如果 obj 是 System.Int16 的实例并且等于该实例的值,则为 true;否则为假。

    short 不是int,因此它返回false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 2019-03-07
      • 2017-09-25
      • 1970-01-01
      • 2015-04-03
      • 2020-01-10
      • 1970-01-01
      相关资源
      最近更新 更多