有人能解释一下为什么这个单元测试在Visual Studio 2013中失败了吗?
[TestMethod]
public void Inconceivable()
{
int? x = 0;
Assert.AreEqual(typeof(int?), x.GetType());
}
在 Nullable 类型上调用 GetType 会导致执行装箱操作,因为在将类型隐式转换为 Object 时会发生这种情况。因此,GetType 总是返回表示基础类型而不是 Nullable 类型的 Type 对象。
您可以从 如何识别 Nullable 类型 中了解更多信息。
以下是从先前文章中摘取的一些示例:
int? i = 5;
Type t = i.GetType();
Console.WriteLine(t.FullName); //"System.Int32"
int? i = 5;
if (i is int) { ... } // true
在StackOverflow上有一个类似的帖子:可空类型不是可空类型吗?
x
除了是int?
之外,程序不会编译。 - Servy