当前位置: 首页 > news >正文

C# 8.0 可空引用类型中的各项警告/错误的含义和示例代码

C# 8.0 引入了可为空引用类型和不可为空引用类型。当你需要给你或者团队更严格的要求时,可能需要定义这部分的警告和错误级别。

本文将介绍 C# 可空引用类型部分的警告和错误提示,便于进行个人项目或者团队项目的配置。


本文内容

    • 开启可空引用类型以及配置警告和错误
    • 警告和错误
      • `CS8600`
      • `CS8602`
      • `CS8603`
      • `CS8618`
      • `CS8625`

开启可空引用类型以及配置警告和错误

本文的内容本身没什么意义,但如果你试图进行一些团队配置,那么本文的示例可能能带来一些帮助。

  • C# 8.0 如何在项目中开启可空引用类型的支持 - 吕毅
  • C# 可空引用类型 NullableReferenceTypes 更强制的约束:将警告改为错误 WarningsAsErrors - 吕毅

警告和错误

CS8600

将 null 文本或可能的 null 值转换为非 null 类型。

string walterlv = null;

CS8600

CS8602

null 引用可能的取消引用。

// 当编译器判定 walterlv 可能为 null 时才会有此警告。
var value = walterlv.ToString();

CS8602

CS8603

可能的 null 引用返回。

string Foo()
{
    return null;
}

CS8603

CS8618

未初始化不可以为 null 的字段 “_walterlv”。

如果一个类型中存在不可以为 null 的字段,那么需要在构造函数中初始化,如果没有初始化,则会发出警告或者异常。

CS8625

无法将 null 文本转换为非 null 引用或无约束类型参数。

void Foo(string walterlv = null)
{
}

CS8625


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • C# 可空引用类型 NullableReferenceTypes 更强制的约束:将警告改为错误 WarningsAsErrors
  • ClearType 的原理:Windows 上文本的亚像素控制
  • 使用 7-Zip 的命令行版本来压缩和解压文件
  • 在项目文件 csproj 中或者 MSBuild 的 Target 中使用 % 引用集合中每一项的属性
  • MSBuild 中的特殊字符($ @ % 等):含义、用法以及转义
  • WPF 获取元素(Visual)相对于屏幕设备的缩放比例,可用于清晰显示图片
  • Visual Studio 通过修改项目的调试配置文件做到临时调试的时候不要编译(解决大项目编译缓慢问题)
  • 使用 dotnet 命令行配合 vscode 完成一个完整 .NET 解决方案的编写和调试
  • 如何修改 Visual Studio 新建项目时的默认路径
  • 使用 EnumWindows 找到满足你要求的窗口
  • WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里?
  • Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度
  • 通过分析 WPF 的渲染脏区优化渲染性能
  • 使用 System File Check (SFC) 工具检查并修复 Windows 系统文件
  • 使用 DISM 工具检查并修复 Windows 系统文件
  • [Vue CLI 3] 配置解析之 css.extract
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • flutter的key在widget list的作用以及必要性
  • Go 语言编译器的 //go: 详解
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 最常见的 200+ 面试题:面试必备
  • Java面向对象及其三大特征
  • TypeScript迭代器
  • vuex 笔记整理
  • 成为一名优秀的Developer的书单
  • 关于for循环的简单归纳
  • 力扣(LeetCode)965
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 译有关态射的一切
  • 整理一些计算机基础知识!
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 达梦数据库知识点
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (pytorch进阶之路)扩散概率模型
  • (剑指Offer)面试题34:丑数
  • (小白学Java)Java简介和基本配置
  • (一)kafka实战——kafka源码编译启动
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)拼包函数及网络封包的异常处理(含代码)
  • *上位机的定义
  • .“空心村”成因分析及解决对策122344
  • .bat批处理出现中文乱码的情况
  • .chm格式文件如何阅读
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net的DataSet直接与SQL2005交互
  • .net流程开发平台的一些难点(1)
  • .net中生成excel后调整宽度
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell