Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将枚举强制转换为int?_C#_.net_Enumeration - Fatal编程技术网

C# 如何将枚举强制转换为int?

C# 如何将枚举强制转换为int?,c#,.net,enumeration,C#,.net,Enumeration,我有一个接受Enum()作为参数的函数: public void SomeFunction(Enum e); 但是,由于某些原因,我无法将其转换为int。我可以获得枚举值的名称,但不能获得它的整数表示形式。 我真的不关心枚举的类型,我只需要整数值。 我应该传递一个int吗?还是我做错了什么 Enum实际上不是枚举。。。令人困惑它是枚举的盒装副本;尽管如此,以下措施仍应奏效: int i = (int)(object)e; (此(对象)cast不会添加框,因为它已装箱) 还请注意,并非所有枚举

我有一个接受Enum()作为参数的函数:

public void SomeFunction(Enum e);
但是,由于某些原因,我无法将其转换为int。我可以获得枚举值的名称,但不能获得它的整数表示形式。
我真的不关心枚举的类型,我只需要整数值。
我应该传递一个int吗?还是我做错了什么

Enum
实际上不是枚举。。。令人困惑它是枚举的盒装副本;尽管如此,以下措施仍应奏效:

int i = (int)(object)e;
(此
(对象)
cast不会添加框,因为它已装箱)

还请注意,并非所有枚举都基于
int
;对于非
int
enum,此取消装箱技巧可能会失败

Int32 intValue = (Int32)Enum.Parse(e.GetType(), e.ToString());

不管枚举的底层存储是什么,这都会起作用,而如果枚举存储在
int32
以外的任何地方(比如,一个
byte
short

你到底想怎么强制转换?@annakata我猜
(int)e
,它给出了“无法将类型'System.Enum'转换为'int'”@annakata:对不起,我认为我很明显。Marc是对的。如果已知
枚举的实际类型(例如Reflection.BindingFlags),可以将其转换为整数或长值。这将适用于基础类型不大于当前使用类型的枚举类型。
int i = Convert.ToInt32(e);