C#8不可为空的引用和隐式用法

罗杰·约翰逊

在Resharper和Rider中,有Jetbrains.Annotations属性,该属性可以应用于隐式使用的类型和字段。

例如,如果您定义某种数据合同/ DTO,则可以使用修饰它,[UsedImplicitly]Resharper将知道不会将该字段标记为未使用。

但是,在C#8中,如果您使用Nullable Ref Types功能。如果您未将这些字段显式设置为非null值,则任何此类不可为null的字段都将标记为“从不初始化”。

是否可以通过某种方式告诉C#8编译器“嘿,忽略这个,只相信我一个”?

例如,假设我们有一个这样的请求消息,也许它被传递给ASP.NET端点或类似对象。

class LoginRequest
{
    public string UserName {get; set;}
}

编译器会抱怨UserName从未初始化,这不是因为它是由Web客户端初始化的。例如SPA应用程序。

抑制此类警告的正确方法是什么?

戴夫·库西诺(Dave Cousineau)

您可以使用null标记为非空对其进行初始化

public string UserName { get; set; } = null!;

乍一看这很奇怪,但它是一种声明某种技术在null短期内可能存在但实际上并未实际使用的非常简单的方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

来自分类Dev

C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

来自分类Dev

C#8中的不可为空的引用类型在运行时可以为null吗?

来自分类Dev

将C#8可为空的引用类型标记为“这不能为空”

来自分类Dev

有关C#8可为空的引用类型的信息是否存储在.NET程序集中?

来自分类Dev

具有C#8可为空的引用类型的TryGetValue模式

来自分类Dev

当在c#8中使用子类约束时,如何指定泛型引用类型为可为空?

来自分类Dev

使用泛型的C#8可为空的引用类型处理中的行为不一致

来自分类Dev

在C#8中,为什么对新表达式进行类型推断会导致可为空的引用?

来自分类Dev

C#8.0不可为空的引用类型和选项模式

来自分类Dev

C#9.0记录-不可为空的引用类型和构造函数

来自分类Dev

SQL Server索引用法和隐式转换

来自分类Dev

如何允许C#8中的可为空的泛型类型作为方法的返回类型?

来自分类Dev

C#8空值和结果容器

来自分类Dev

在C#8中,如何检测不可能的空检查?

来自分类Dev

从Visual Studio 2015.2更新到2015.3后,隐式转换,相等运算符和可为空的组合无法编译

来自分类Dev

不可为空的引用类型:为什么编译器认为我的对象可为空?

来自分类Dev

利用C#8索引和范围

来自分类Dev

将DTO类与ORM一起使用时,C#8中的可空引用类型

来自分类Dev

检查类型是否匹配可为空和不可为空的版本

来自分类Dev

具有可为空和不可为空的泛型数组的方法调用

来自分类Dev

测试null而不影响C#8可为null的分析器

来自分类Dev

不可为空的 DateTime (in)equality 与 null 编译和运行?

来自分类Dev

C语言:隐式指针解引用

来自分类Dev

C#和可为空的标志/注释?

来自分类Dev

C#8默认实现和依赖倒置

来自分类Dev

可为空的引用类型和“ [CS8603]可能为空的引用返回”。

来自分类Dev

可为空的通用引用类型

来自分类Dev

使用可为空和不可为空的日期值创建Blazor自定义日期选择器组件

Related 相关文章

  1. 1

    C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

  2. 2

    C#8可为空和不可为空的引用类型-仅当输入为可为空时才可为可输出

  3. 3

    C#8中的不可为空的引用类型在运行时可以为null吗?

  4. 4

    将C#8可为空的引用类型标记为“这不能为空”

  5. 5

    有关C#8可为空的引用类型的信息是否存储在.NET程序集中?

  6. 6

    具有C#8可为空的引用类型的TryGetValue模式

  7. 7

    当在c#8中使用子类约束时,如何指定泛型引用类型为可为空?

  8. 8

    使用泛型的C#8可为空的引用类型处理中的行为不一致

  9. 9

    在C#8中,为什么对新表达式进行类型推断会导致可为空的引用?

  10. 10

    C#8.0不可为空的引用类型和选项模式

  11. 11

    C#9.0记录-不可为空的引用类型和构造函数

  12. 12

    SQL Server索引用法和隐式转换

  13. 13

    如何允许C#8中的可为空的泛型类型作为方法的返回类型?

  14. 14

    C#8空值和结果容器

  15. 15

    在C#8中,如何检测不可能的空检查?

  16. 16

    从Visual Studio 2015.2更新到2015.3后,隐式转换,相等运算符和可为空的组合无法编译

  17. 17

    不可为空的引用类型:为什么编译器认为我的对象可为空?

  18. 18

    利用C#8索引和范围

  19. 19

    将DTO类与ORM一起使用时,C#8中的可空引用类型

  20. 20

    检查类型是否匹配可为空和不可为空的版本

  21. 21

    具有可为空和不可为空的泛型数组的方法调用

  22. 22

    测试null而不影响C#8可为null的分析器

  23. 23

    不可为空的 DateTime (in)equality 与 null 编译和运行?

  24. 24

    C语言:隐式指针解引用

  25. 25

    C#和可为空的标志/注释?

  26. 26

    C#8默认实现和依赖倒置

  27. 27

    可为空的引用类型和“ [CS8603]可能为空的引用返回”。

  28. 28

    可为空的通用引用类型

  29. 29

    使用可为空和不可为空的日期值创建Blazor自定义日期选择器组件

热门标签

归档