可空值类型是否具有特殊的空检查逻辑?

时间:2016-10-24 19:28:57

标签: c# nullable

UIAlertController是一个ValueType,因此您可以保证永远不会在Nullable<T>上使用空引用,但是以下传递;

Nullable<T>

[Test] public void ShouldTestNullRef() { int? value = null; IsNull(value).Should().BeTrue(); // Passes IsNull(new Nullable<int>()).Should().BeTrue(); // passes } private bool IsNull<T>(T nullable) { return nullable == null; } 不应该IsNull总是返回false吗?

这个奇特的编译器魔术吗?

对Nullable的引用:(https://msdn.microsoft.com/en-us/library/b3h38hb0%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

编辑: 这不同于 Nullable<T>

当我为ReferenceTypes运行IsNull它按预期返回 ,但是当我反编译时,我没有看到该方法的两个版本。我的问题是关于Generics如何处理(可空)结构的差异的潜在实现。例如,Which is preferred: Nullable<>.HasValue or Nullable<> != null?不知道nullable是结构或值类型。

0 个答案:

没有答案