【问题标题】:C# and nullable flag/annotation?C# 和可为空的标志/注释?
【发布时间】:2016-07-25 07:41:24
【问题描述】:

C# 有 Nullable 注释吗?

例如在 Java 中

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

现在当开发者尝试调用时

Object.getModel().someMethod()

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

我知道 ? 标记在 C# 中的 var 名称末尾,例如 someObject?,但问题是当在许多地方使用 var 时,它可能是棘手的/烦人的/JSON 模型。

【问题讨论】:

标签: c# nullable


【解决方案1】:

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

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

【讨论】:

  • 编译器与此有什么关系?
  • 好吧,我想编译器理论上可以进行复杂的分析并在一个人没有在他应该检查的地方检查 null 时生成警告。但你是对的,这更像是一种语言特性,而不是编译器特性。我会改写这个。
【解决方案2】:

简而言之,没有。

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

Proposal: Nullable reference types and nullability checking

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多