【问题标题】:Difficulty with double双倍难度
【发布时间】:2014-07-23 14:45:18
【问题描述】:

下面一行:

String itemid = reader1.IsDBNull(itemid_Index) ? null : reader1.GetString(itemid_Index);

给我一​​个运行时错误:

无法将“System.Double”类型的对象转换为“System.String”类型

我已尝试将行更改为:

Double itemid = reader1.IsDBNull(itemid_Index) ? (Double?)null : reader1.GetDouble(itemid_Index);

但它给出了以下设计时错误:

不能隐式转换类型'double'? “加倍”。显式 存在转换(您是否缺少演员表?)

有什么想法吗?

【问题讨论】:

  • itemid 变成Double??否则像reader1.GetDouble(itemid_Index) ?? nullreader1.GetDouble(itemid_Index).Value (如果你确定GetDouble 不会返回null)
  • double 似乎是 index 列的奇怪数据类型...

标签: c# .net


【解决方案1】:

您不能将null 分配给double。你要么需要使用double?:

Double? itemid = reader1.IsDBNull(itemid_Index) ? (Double?)null :  reader1.GetDouble(itemid_Index);

或使用其他值来表示“null”:

Double itemid = reader1.IsDBNull(itemid_Index) ? Double.MinValue : reader1.GetDouble(itemid_Index);

【讨论】:

  • 我撤回我的评论。我本可以发誓我以前尝试过这样做,然后编译器对我大喊大叫。
  • @krillgar 这很挑剔,但在这种特殊情况下它应该可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2016-12-22
  • 2021-06-28
  • 2013-03-30
相关资源
最近更新 更多