C# 什么是可空<;T>;?`?
我输入了一个错误,Visual Studio没有将其标记为错误:C# 什么是可空<;T>;?`?,c#,nullable,C#,Nullable,我输入了一个错误,Visual Studio没有将其标记为错误: void方法(可空?font=null){} font在输出中显示为SpriteFont??。我刚才做了什么 UPD:对不起,各位,我没有尝试共同编译它,只是在编译之前没有显示为错误。不过,它在输出中看起来像Type???,这还是很奇怪的 此外,SpriteFont已经可以为空,所以我还是会得到一个错误:(我刚才在这里试过了……我无法重现你说的话 以下所有语句都无法编译: Nullable?a=1; Nullable b=1;
void方法(可空?font=null){}
font
在输出中显示为SpriteFont??
。我刚才做了什么
UPD:对不起,各位,我没有尝试共同编译它,只是在编译之前没有显示为错误。不过,它在输出中看起来像Type???
,这还是很奇怪的
此外,
SpriteFont
已经可以为空,所以我还是会得到一个错误:(我刚才在这里试过了……我无法重现你说的话
以下所有语句都无法编译:
Nullable?a=1;
Nullable b=1;
Nullable a=1;
void A(可为空的A)
void A(可为空?A)
void A(可为空的A)
使用Visual Studio 2012、C#4或5,我认为,.Net framework 4.5。编辑器的语法检查器未能将其标记为带有红色波形的错误,而不是编译器
两个不同的代码块。它们必须是,当您键入代码时,语法检查代码,本质上总是被破坏的,需要一种非常不同的方法。您将字体定义为可空字体。我认为接受空值的类型不能被设为可空……就像类一样。@manman:将其作为一个例子answer@Miguel安杰洛:有
没有泛型约束的谓词?如果不是-如何约束它?Nullable
struct是一种特殊类型…它由C#编译器和CLR以不同的方式处理。@Vulcan:不,我认为这是一个答案,因为问题看起来是错误的。@Vulcan:错误的问题或错误的语句不存在答案…只是反例。这实际上是一个答案。当答案基本上说“我不知道你是怎么做到的”时,问题通常是问题:)这是唯一的解释!这也意味着问题是在没有实际编译代码的情况下提出的。