C#, cast variable to Enum.GetUnderlyingType
假设我有枚举,其基础类型是byte:
1 2 3 4 5
| enum EmpType : byte
{
Manager = 1,
Worker = 2,
} |
我可以将一些int文本转换为此枚举的基础类型(在本例中是byte)吗?
类似这样的事情不起作用(错误:";预期"):
1
| byte x = (Enum.GetUnderlyingType(typeof(EmpType )))15; |
我可以在不显式写入(字节)15的情况下强制转换为基础类型吗?
谢谢。
- 这个问题对我来说毫无意义。你想用这种诡计达到什么目的?
- Enum.GetUnderlyingType返回类型。所以这是在尝试将15强制转换为类类型
- @Pietergerkens:他希望对枚举的基础类型类型进行强制转换,而不必再次指定该类型是什么。
- @帕塔舒:这很明显。问题是为什么,因为这更像是寻找问题的解决方案,而不是真正的问题。那么,究竟是什么决定了试图将15强制转换成一个值从1到2的枚举呢?
- @彼得吉尔肯斯:这只是一个理论问题。我不会用真正的代码实现它。只是想知道怎么做。顺便说一下,我不是将15强制转换为枚举值1或2,而是尝试强制转换为字节值。
- 你应该在你原来的帖子里说明这一点。错误的数据会给你错误的答案,失去你的朋友。
我想以下几点可以。但我不确定在任何情况下它都能让你获得想要的行为。
1
| var x = Convert .ChangeType(15, Enum.GetUnderlyingType(typeof(EmpType ))) |
- 正是我需要的,谢谢。
- 很乐意帮忙!但要小心。这很奇怪。
我不完全确定你想做什么。下面是一个有关将int转换为枚举的相关问题,反之亦然,在这种情况下,同样适用于字节。
是否可以将整数强制转换为枚举?
如果要在运行时检测基础类型…这看起来很尴尬,而且工作很多。您可以根据基础类型的名称执行case语句。我不知道它会对你有什么好处,因为类型安全问题。