以下C#代码:
int? a = null;
Console.WriteLine(a ?? 3);
可以打印出CCD_ 1。但如果改为:
Console.WriteLine(null ?? 3);
然后它就无法运行,发出
error CS0019: Operator '??' cannot be applied to operands of type '<null>' and 'int'
是否可以将null
用作C#中的值或操作数?
这将适用于
Console.WriteLine((int?)null ?? 3);
由于null
没有类型,您需要将其强制转换为引用类型或可为null的类型
这取决于类型是否由上下文给定。例如,你可以做:
(int?)null ?? 3
或
null ?? (int?)3
如果你想装箱而不是包装到Nullable<>
,那就是:
(object)null ?? 3
或
null ?? (object)3
或者你可以使用int
实现的另一个基类或接口,比如:
(IFormattable)null ?? 3
或
null ?? (IFormattable)3
裸null
本身没有类型,但它可以隐式转换为允许null值的一组类型。
对于引用类型,可以从上下文推断该类型:
null ?? "three" /* OK */