可能是重复问题:
C#允许将值类型与null进行比较
考虑下面这段使用TimeSpan(结构体)的代码:
// will not compile - illegal
TimeSpan ts = null;
然而,下面的代码虽然表达式始终为false,但是它确实可以编译并且是合法的:
if (ts == null)
Console.WriteLine("this line will never be hit");
有人可以告诉我为什么将结构体设置为NULL是无效的,但将其与NULL进行比较却是可以的吗?
Nullable<T>
实现为struct
?(当然,您不能这样做)。Nullable<T>
可以被实现为引用类型。 - Ed S.Nullable<T>
确实 是一个结构体。 - phoog