什么是“Nullable <t>?”?</t>

时间:2012-10-23 02:33:11

标签: c# nullable

我输错了,Visual Studio没有将其标记为错误:

void Method(Nullable<SpriteFont>? font = null) { }

font在输出中显示为SpriteFont??。我刚刚做了什么?

UPD:对不起,大家,我没有尝试编译它,它只是在我做之前没有显示为错误。但是,在输出中看起来Type??很奇怪。

此外SpriteFont已经可以为空了,所以无论如何我都会遇到错误:(

2 个答案:

答案 0 :(得分:4)

我在这里试过,刚才......我无法重现你说的话。

以下所有语句都无法编译:

  • Nullable<int>? a = 1;
  • Nullable<Nullable<int>> b = 1;
  • Nullable<int?> a = 1;
  • void A(Nullable<Nullable<int>> a)
  • void A(Nullable<int>? a)
  • void A(Nullable<int?> a)

使用Visual Studio 2012,C#4或5我认为.Net framework 4.5。

答案 1 :(得分:4)

编辑器的语法检查器无法将其标记为红色波形的错误。不是编译器。

两个不同的代码块。它们必须是,当你输入代码时,语法检查代码,本质上总是坏了,需要一种非常不同的方法。