【发布时间】:2018-12-06 20:11:31
【问题描述】:
我很好奇可空引用类型是如何工作的,不是在您自己的代码库中,而是在已经编译的库中。 C# 是否能够知道某个属性或参数是否可以为空,或者检查某些编译器添加的属性是否存在?
【问题讨论】:
-
如ms doc 中所写,可空值是类型:
Nullable<T>其中 T 是值类型。不需要特殊属性。 -
@H.G.Sandhagen 他说的是可为空的 reference 类型,C# 8 中的新概念和支持,不一样。
-
@HGSandhagen 在未发布的 C# 8 中我们得到了像
public string? myString {get; set;}这样的新东西> -
是的,如果你在引用类型之后使用
?,它会添加一个属性。已编译的程序集(即未使用 C# 8 编译的程序集)将不具有这些属性。编译器是否会以不同的方式处理该程序集,或者只是假设所有说它返回引用的东西都返回一个非空值,我不知道,这就是我不发布答案的原因。你可以在这里查看结果:sharplab.io/… -
@LasseVågsætherKarlsen 感谢您提供Sharplab链接,它回答了问题。
标签: c# c#-8.0 nullable-reference-types