【发布时间】:2014-02-07 18:08:52
【问题描述】:
我有一个这样的枚举:
public enum MyEnum
{
Character = 'C',
Number = 'N',
}
然后我正在做这样的事情:
char myChar = 'C';
var value = Enum.GetName(typeof(MyEnum), myChar); //throw exception on .NET 3.5 or less
此代码在使用 .NET 4 的项目中是可以的,但在 .NET 3.5 或更低版本上会引发异常。这是一个例外:
传入的值必须是枚举基类或基础类型 枚举,例如一个 Int32。参数名称:值
所以我使用 .NET 4 发布了我的项目,并与我的朋友分享并告诉他们他们需要 .NET4。他们成功运行了程序但发现程序在某些系统上即使使用 .NET 4 也会引发相同的异常!有人知道这个异常的原因是什么吗?
我通过这种方式解决了这个问题,但想知道为什么它在某些系统上有效,而在其他一些系统上无效? (他们都有.NET4)
var value = Enum.GetName(typeof(MyEnum), (int)myChar);
【问题讨论】:
-
错误信息的哪一部分你不明白?您需要传递一个数字。
-
但它在某些系统上的 .NET 4 中工作。
-
你能比较一下哪些系统可以工作,哪些不可以吗?如果它在安装了 .NET 4.5 的那些系统(并且仅限于那些系统)上运行,我不会感到惊讶。尽管您的目标是 4.0,但 4.5 是一种就地升级,有一些细微的行为变化。
-
C#/VB.NET 中隐式转换的微妙之处...
-
@hvd 不幸的是,我现在无法访问这些系统。获取有关它们的信息需要一些步骤...
标签: c# .net-4.0 exception-handling enums