散分,C#的可空值类型

OrdinaryCoder 2019-03-25 04:22:35
C#有可空值类型,但是一直都没用到过,那么可空值类型有什么特定的应用场景吗,它的意义何在呢
...全文
1102 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡龙 2019-03-27
  • 打赏
  • 举报
回复
譬如数据库有个字段叫做生日 如果没有录入,那就是null 录入了,就有时间了
晨易夕 2019-03-27
  • 打赏
  • 举报
回复
我这用得最多的还是ORM中的模型了,对应数据库中的可空字段。
OrdinaryCoder 2019-03-27
  • 打赏
  • 举报
回复
引用 44 楼 大马猴猴 的回复:
接分

兄弟不好意思啊,你回复的时候已经结贴了
Expect love. 2019-03-26
  • 打赏
  • 举报
回复
小白看你们评论受益匪浅
SoulRed 2019-03-26
  • 打赏
  • 举报
回复
意义在于简化编程的复杂度。 让编程更灵活。 配合?? 运算符。有奇效
住手丶让我来 2019-03-26
  • 打赏
  • 举报
回复
一般设计成不可空吧,没试过
baidu_27549073 2019-03-26
  • 打赏
  • 举报
回复
空代表没有 比如说int型 当可以不输入时,就必须定义成 int? 接口定义中经常出现。有很多参数是选填的。
头秃的菜鸡 2019-03-26
  • 打赏
  • 举报
回复
膜拜大佬,经验+3!
wanghui0380 2019-03-26
  • 打赏
  • 举报
回复
其实我5分钟前我还用到了,依赖缓存了一些状态枚举值,1分钟后失效

当然外面会有一个属性访问缓存的状态,问题来了。缓存失效后我应该返回啥?null么?语法不让啊。枚举是值类型,所以只能选择Nullable<T>了
  • 打赏
  • 举报
回复
luj_1768 2019-03-26
  • 打赏
  • 举报
回复
以前没注意到,我看大家的意思是,可空值类型是模糊型数据的一种标记方法。当初,不少家电企业研究过模糊控制论,可能有不少结论性的解答,不过应该属于企业机密了。一般有三种解题思路:1. 分级控制;2. 趋势管理;3. 指标分解加随机数导入。相关问题比较复杂,想深入研究还需要自己学习有关的专业资料,这里就不多介绍了。
xiaoxiangqing 2019-03-26
  • 打赏
  • 举报
回复
有些地方就需要用到,存在就有合理的
OrdinaryCoder 2019-03-26
  • 打赏
  • 举报
回复
引用 23 楼 残幕遥 的回复:
可空值类型可以用来承接其他类里面方法的返回值,并对其做出判断,增加了程序的稳定性。
就比如WPF里面的checkBoc,是一个打钩的控件,就有三种状态,
打钩了,就是true
没有打钩,就是false
还有一种情况,就是还没有看到它,还没有做出选择。就比如你网上做题,做到第2题,那么第10题肯定没有做,那第10题的状态是什么,那么就是空,就是你还没有做出选择,可以理解为null

通俗易懂
残幕遥 2019-03-26
  • 打赏
  • 举报
回复
可空值类型可以用来承接其他类里面方法的返回值,并对其做出判断,增加了程序的稳定性。 就比如WPF里面的checkBoc,是一个打钩的控件,就有三种状态, 打钩了,就是true 没有打钩,就是false 还有一种情况,就是还没有看到它,还没有做出选择。就比如你网上做题,做到第2题,那么第10题肯定没有做,那第10题的状态是什么,那么就是空,就是你还没有做出选择,可以理解为null
OrdinaryCoder 2019-03-26
  • 打赏
  • 举报
回复
引用 19 楼 hez2010 的回复:
比如数据库中某一个 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,楼主可以多了解了解。

这个学到了 虽然我现在用.NET 4.5
闭包客 2019-03-26
  • 打赏
  • 举报
回复
比如要对应数据库里面的整型 null 值的时候。
ap0909629 2019-03-26
  • 打赏
  • 举报
回复
学习了,谢谢楼主的分享,太棒了!!!!!!!!!!!
ponymavericks 2019-03-26
  • 打赏
  • 举报
回复
没看明白
射手座cl 2019-03-26
  • 打赏
  • 举报
回复
增加了语言的灵活性
啊宝儿姐 2019-03-26
  • 打赏
  • 举报
回复
这个问题要从语言本身说起。c#是强类型的语言,那么多哪些类型呢?int float string object... 还有int?,long?等等。那么这样一想就明白了,int不能为空,int?可为空,object可为空。。。
加载更多回复(25)

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧