那是什么?在类型声明后,C#中的运算符是什么意思?

use*_*056 8 c# nullable

我有一些带有以下数组声明的C#代码.注意单?Color.

private Color?[,] scratch;
Run Code Online (Sandbox Code Playgroud)

在我的调查中,我发现如果您有以下代码:

int? a;
Run Code Online (Sandbox Code Playgroud)

变量a未初始化.你何时何地使用它?

Hab*_*bib 17

?只是语法糖,它意味着该字段是Nullable.它实际上是短暂的Nullable<T>.

在C#和Visual Basic中,使用?将值类型标记为可为空?值类型后的表示法.例如,int?在C#或整数?在Visual Basic中声明一个可以指定为null的整数值类型.

您不能分配null值类型,int作为值类型不能保持null值,int?另一方面可以存储空值.

情况也是如此Color,因为它是一个结构(因此是值类型)并且它不能保存空值,而Color?[,]您正在创建一个可以为空的Color数组.

对于你的问题:

变量'a'未初始化.你何时何地使用它?

通过使用?with变量不会使其初始化为null任何其他值,它仍然必须初始化.

int? a = null; 

int b = null;//error since b is not nullable
Run Code Online (Sandbox Code Playgroud)