为什么c#允许这个?(null检查到int)

Roy*_*mir 8 c# nullable

可能重复:
C#可以将值类型与null进行比较

为什么C#允许:

class MyClass
{
    public int MyInt;
}

static void Main(string[] args)
{
    MyClass m = new MyClass();
    if (m.MyInt == null) // <------------- ?
        Console.Write("......");
}
Run Code Online (Sandbox Code Playgroud)

Resharper说" 表达总是假的 " - 这显然是真实的,因为MyIntint和不是int?

但是C#如何允许这个编译?该物业将永远存在,其类型是int!

Tig*_*ran -1

我认为,这与编译的原因相同

if(false)
   Console.WriteLine("never get here");
Run Code Online (Sandbox Code Playgroud)

永远不会执行的事情。

值得一提的是,是的,您不会收到错误,但您会收到警告。

  • @downvoter:出于爱好的原因或否决? (8认同)
  • 有很多人喜欢在没有解释的情况下投反对票 (2认同)
  • 我投了反对票,因为我不相信这是问题的答案。作为评论会更合适。 (2认同)