C#,将变量强制转换为Enum.getUnderlineType

C#,将变量强制转换为Enum.getUnderlineType,c#,.net,casting,enums,C#,.net,Casting,Enums,假设我有enum,它的底层类型是byte: enum EmpType : byte { Manager = 1, Worker = 2, } 我是否可以将一些int文本强制转换为此枚举的基础类型(本例中为字节) 类似的操作不起作用(错误:“预期”): 我可以在不显式写入(字节)15的情况下强制转换到基础类型吗 谢谢。我想下面的方法行得通。但我不确定它在所有情况下都能让你达到想要的行为 var x = Convert.ChangeType(15, Enum.GetUnderlyi

假设我有enum,它的底层类型是byte:

enum EmpType : byte
{
    Manager = 1,
    Worker = 2,
}
我是否可以将一些int文本强制转换为此枚举的基础类型(本例中为字节)

类似的操作不起作用(错误:“预期”):

我可以在不显式写入(字节)15的情况下强制转换到基础类型吗


谢谢。

我想下面的方法行得通。但我不确定它在所有情况下都能让你达到想要的行为

var x = Convert.ChangeType(15, Enum.GetUnderlyingType(typeof(EmpType)))

我不完全确定你想做什么。下面是一个关于将int转换为enum的相关问题,反之亦然,在本例中同样适用于byte


如果要在运行时检测基础类型。。。这看起来很尴尬,而且工作量很大。您可以根据基础类型的名称执行case语句。出于类型安全考虑,我不确定这对您有什么好处。

这个问题对我来说毫无意义;。您想用这个shenanigan实现什么?Enum.GetUnderlineType返回一个类型。所以这是试着在课堂上投15分Type@PieterGeerkens:他想对枚举的底层类型执行强制转换,而不必再次指定该类型。@Patashu:这很明显。问题是为什么,因为这更像是寻找问题的解决方案,而不是真正的问题。那么,试图将15强制转换为一个值范围为1到2的枚举到底有什么意义呢?@Pieter Geerkens:这只是一个理论问题。我不会用真正的代码实现它。我只是想知道怎么做。顺便说一句,我不是将15转换为1或2的枚举值,而是尝试转换为字节值。很高兴提供帮助!但是要小心。这很奇怪。即使在将来,我发现这在枚举枚举中的所有标志的通用帮助器方法中非常有用,可以选择检索基础类型的值。这与我要查找的不完全一样,但感谢您提供有用的链接。
var x = Convert.ChangeType(15, Enum.GetUnderlyingType(typeof(EmpType)))