可能重复:
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说" 表达总是假的 " - 这显然是真实的,因为MyInt是int和不是int?
但是C#如何允许这个编译?该物业将永远存在,其类型是int!
Tig*_*ran -1
我认为,这与编译的原因相同
if(false)
Console.WriteLine("never get here");
Run Code Online (Sandbox Code Playgroud)
永远不会执行的事情。
值得一提的是,是的,您不会收到错误,但您会收到警告。