C#中值类型不能赋空值吗?从数据库读取的值类型空值怎么传给值类型变量呢?

Ascode 2008-07-06 08:06:03
数据库中是int类型的列,从数据库中读取这个列,并把它赋值给一个值类型变量时,遇到一个空值,于是VS提示:不能将System.DBNull类型转换为int类型,这情况怎么处理啊!
...全文
645 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ascode 2008-07-10
  • 打赏
  • 举报
回复
谢谢6楼的指点,关于对类型进行比较你说的很具体,你不说我还忘了is关键字了,不过我已经结贴了,下次有机会多给分你!
wuyi8808 2008-07-06
  • 打赏
  • 举报
回复
object o; // 你从数据库中读取的可为NULL的int类型的列
int? i; // C#中用于保存结果的变量,可空类型
if (o is System.DBNull) i = null; // 如果为空值
else i = (int)o; // 不是空值
brz97 2008-07-06
  • 打赏
  • 举报
回复
如果楼主是想在从数据库取值的时候就判断是不是空

请使用DBNull来判断,因为数据库中的'空值'是DBNull类型,不是null类型

brz97 2008-07-06
  • 打赏
  • 举报
回复
可空类型就是NullAble类型

具体请看msdn关于NullAble的说明
Ascode 2008-07-06
  • 打赏
  • 举报
回复
关于第二条可空类型能够说明白点吗?[Quote=引用 1 楼 changjiangzhibin 的回复:]
1 赋值前先判断是否为空,为空另处理,不为空再赋值
2 使用可空类型(int? temp;)接受,后期再处理;
[/Quote]
brz97 2008-07-06
  • 打赏
  • 举报
回复
估计楼主说得是int i = null;这种语句吧

这样是不行的,因为int是值类型啊,null表示空引用,一个值类型怎么可以被赋值成引用类型啊

如果楼主一定要采用这种方式,可以使用Nullable<T>的方式

具体请查看msdn关于Nullable<T>的说明
changjiangzhibin 2008-07-06
  • 打赏
  • 举报
回复
1 赋值前先判断是否为空,为空另处理,不为空再赋值
2 使用可空类型(int? temp;)接受,后期再处理;

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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