C# 和可为空 flag/annotation?

C# and nullable flag/annotation?

C# 有 Nullable 注释吗?

例如 Java

public @Nullable <T extends BaseJsonClass> T getModel(String saveKey, Class<T> type) {

现在当开发者试图调用

Object.getModel().someMethod()

编译器会警告他们他们没有检查 null。

我知道 C# 中 var 名称末尾的 ? 标记,例如 someObject? 但问题是当变量是 tricky/annoying/JSON 模型时很多地方都在使用。

简而言之,没有。

但目前是对未来发展的建议

Proposal: Nullable reference types and nullability checking

C# 没有这样的东西——这样的特性还不是语言的一部分。

但是,如果您使用 ReSharper,则可以利用其 Value and Nullability Analysis 功能,该功能允许您向代码添加多个属性:[CanBeNull][NotNull][ItemCanBeNull], [ItemNotNull].插件执行的可空性分析将考虑这些属性,从而导致您要求的编译时警告。