相关疑难解决方法(0)

为什么我不能将int取消装入十进制?

我有一个IDataRecord reader我正在检索小数,如下所示:

decimal d = (decimal)reader[0];
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这会抛出一个无效的强制转换异常,说"指定的强制转换无效".

当我这样做reader[0].GetType()时告诉我它是Int32.据我所知,这应该不是问题....

我已经通过这个片段测试了这个,它运行得很好.

int i = 3750;
decimal d = (decimal)i;
Run Code Online (Sandbox Code Playgroud)

这让我头疼不已,想知道为什么它没有将读取器中包含的int取消装箱作为小数.

有谁知道为什么会这样?有什么微妙的我不见了吗?

c# int unboxing decimal

61
推荐指数
3
解决办法
2万
查看次数

为什么(int)(对象)10m抛出"指定的强制转换无效"异常?

为什么这个显式转换会抛出Specified cast is not valid.异常?

decimal d = 10m;
object o = d;
int x = (int)o;
Run Code Online (Sandbox Code Playgroud)

但这有效:

int x = (int)(decimal)o;
Run Code Online (Sandbox Code Playgroud)

c# casting

39
推荐指数
3
解决办法
2万
查看次数

将对象强制转换为int会在C#中抛出InvalidCastException

我有这个方法:

private static Dossier PrepareDossier(List<List<object>> rawDossier)
{
    return new Dossier((int)rawDossier[0][0]);
}
Run Code Online (Sandbox Code Playgroud)

当我使用它时,我得到了一个InvalidCastException.但是,当我使用Convert.ToInt32(rawDossier[0][0])它时工作得很好.问题是什么?

c# unboxing casting

5
推荐指数
1
解决办法
7227
查看次数

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

在判断此问题已得到回答之前,请阅读说明。我在下面有这个简单的代码:

Dictionary<string, object> d = new Dictionary<string, object>();

d.Add("key" , 30d);

System.Diagnostics.Debug.WriteLine($" TYPE OF OBJECT IS  \"{d["key"].GetType()}\"");

netPlannedHours = (float)d["key"];         ---> **Line of Interest**
Run Code Online (Sandbox Code Playgroud)

当我执行这个我得到:

对象的类型为“ System.Double”。引发异常:DevOpsAutomatedReporting.dll中的“ System.InvalidCastException”无法将类型为“ System.Double”的对象转换为类型为“ System.Single”。

例外是由标记为“兴趣线”的最后一行引起的。我真的不明白为什么最后一行会导致这种情况,因为在运行时将对象的类型推断为“ System.Double”,因此它应该将其强制转换为浮点数,但事实并非如此。有趣的一点是,如果我用以下两行代码之一替换最后一行(“感兴趣的行”),它将成功将double转换为float

// Cast the double object to double again and then to float **WORKS**
netPlannedHours = (float)(double)d["key"];

// Convert to float using "Convert.ToSingle()"  **WORKS**
netPlannedHours = Convert.ToSingle(d["key"]);
Run Code Online (Sandbox Code Playgroud)

请对此有所启发。谢谢!

.net c# precision casting type-conversion

4
推荐指数
2
解决办法
876
查看次数

标签 统计

c# ×4

casting ×3

unboxing ×2

.net ×1

decimal ×1

int ×1

precision ×1

type-conversion ×1