接分
可空值类型可以用来承接其他类里面方法的返回值,并对其做出判断,增加了程序的稳定性。 就比如WPF里面的checkBoc,是一个打钩的控件,就有三种状态, 打钩了,就是true 没有打钩,就是false 还有一种情况,就是还没有看到它,还没有做出选择。就比如你网上做题,做到第2题,那么第10题肯定没有做,那第10题的状态是什么,那么就是空,就是你还没有做出选择,可以理解为null
比如数据库中某一个 Integer 字段可为 null 那么你在 EF Core 中,使用的时候就应该将对应的属性类型写为 int? 这样该属性既可以有值,也可以为 null,就与数据库那边对接上了。 可空类型本质上是 Nullable<T>,然而C# 7.3 及以下 T 有 struct 约束,即只有值类型可为 null,就是楼主所说的可空值类型。但是从 C# 8 开始,微软打算从底层彻底解决 NullReferenceException 的问题,引入了 nullable reference type,即可空引用类型,因此引用类型 T 如果不写为 T? 的话,也是不可为 null 的(为了兼容性,目前只会有警告,而不会编译错误)。 在以后,C# 8 及以上版本中,类型 T 就代表数据一定是该类型,而 T? 代表数据可能为该类型也可能为空,本质上为 Nullable<T>,在函数式编程范畴中,我们说Nullable<T>其实就是一个 Monad,楼主可以多了解了解。
110,499
社区成员
642,566
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧