C# 指定的强制转换无效(双精度到int)
这里我需要将双精度转换为整数 示例:C# 指定的强制转换无效(双精度到int),c#,casting,C#,Casting,这里我需要将双精度转换为整数 示例: obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ? (Int32)reader["DateDiff"] : 0; 类型: obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ? (Int32)re
obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ?
(Int32)reader["DateDiff"] : 0;
类型:
obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ?
(Int32)reader["DateDiff"] : 0;
- 类型
int
数据库表中
双精度
类型的
DateDiff
obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ?
(Int32)reader["DateDiff"] : 0;
指定的强制转换无效
你所做的相当于:
object x = 32.5;
int y = (int) x;
您不能这样做-取消装箱时,必须取消装箱到实际类型的值1
因此,您需要:
object x = 32.5;
int y = (int) (double) x;
对double
的转换将取消装箱,对int
的转换将double
转换为int
。您可以在代码中执行相同的操作:
(Int32)(Double) reader["DateDiff"] : 0;
1,对一些东西进行模化。CLR允许您将
int
解装箱到uint
或基础类型为int
的枚举类型,等等。您所做的工作相当于:
object x = 32.5;
int y = (int) x;
您不能这样做-取消装箱时,必须取消装箱到实际类型的值1
因此,您需要:
object x = 32.5;
int y = (int) (double) x;
对double
的转换将取消装箱,对int
的转换将double
转换为int
。您可以在代码中执行相同的操作:
(Int32)(Double) reader["DateDiff"] : 0;
1,对一些东西进行模化。CLR允许您将
int
解装箱到uint
或基础类型为int
的枚举类型,等等。读取器[“DateDiff”]的值到底是多少?调试并告诉我们。@SonerGönül,DateDiff
由值200组成。reader[“DateDiff”]
的值到底是多少?调试并告诉我们。@SonerGönül,DateDiff
compostvalue
200。是的!我得到了它。非常感谢,是的!我得到了它。非常感谢你。