【问题标题】:System.InvalidCastException: Specified cast is not valid Only on certain MachinesSystem.InvalidCastException:指定的强制转换仅在某些机器上无效
【发布时间】:2010-01-12 10:41:44
【问题描述】:

我们有将对象转换为短的代码。

type.BusinessAreaID = (short)caType.credit_assessment_biz_areaReference.EntityKey.EntityKeyValues[0].Value;

对象的值为 2。

此代码(单元测试)可在创建代码的开发人员的 PC 上运行。但是我们在构建服务器和另一台开发 PC 上得到了一个无效的转换异常。

BusinessAreaID 是 short 类型。

该 Dll 也在 GAC 中,我们已对其进行了更新,因此它应该是相同的。

任何人都有任何想法。

【问题讨论】:

  • 假设对象在抛出异常的机器上不具有值 2。
  • 它是从单元测试中运行的,因此值始终为 2,也已调试以确保

标签: c# .net


【解决方案1】:

您不能将值拆箱为其他类型。例如,这有效:

short x = 2;
object y = (object)x;
short z = (short)y;

但事实并非如此:

int x = 2;
object y = (object)x;
short z = (short)y; // InvalidCastException

您确定caType...lues[0].Value 中存储的值是short 类型吗?

【讨论】:

  • 这是属性的类型。但正如您在我的示例中所看到的,您可以将 short 类型的值存储在 object 类型的变量中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 2013-08-27
相关资源
最近更新 更多