c# 在不知枚举类型的实际类型的情况下,不用循环和Linq如何将int[]转为任意枚举类型的数组
时间: 2024-03-13 13:45:08 浏览: 54
在不知道枚举类型实际类型的情况下,可以使用Enum.Parse方法将int值转换为枚举类型的值。代码如下:
```csharp
int[] intArray = { 1, 2, 3, 4, 5 };
Type enumType = typeof(YourEnumType);
Array enumArray = Array.CreateInstance(enumType, intArray.Length);
for (int i = 0; i < intArray.Length; i++)
{
object enumValue = Enum.Parse(enumType, intArray[i].ToString());
enumArray.SetValue(enumValue, i);
}
```
其中,`YourEnumType`为你要转换的枚举类型。首先通过typeof操作获取枚举类型的Type对象,然后使用Array.CreateInstance方法创建一个类型为枚举类型的数组,长度与int数组相同。接着使用循环和Enum.Parse方法将int值转换为枚举类型的值,并将其赋值给枚举类型的数组。最终得到的enumArray数组对象即为转换后的枚举类型的数组。
相关问题
c# 不用循环和Linq如何将int[]转为任意枚举类型的数组
可以使用Array.ConvertAll方法将int[]转换为任意枚举类型的数组,代码如下:
```csharp
int[] intArray = { 1, 2, 3, 4, 5 };
YourEnumType[] enumArray = Array.ConvertAll(intArray, x => (YourEnumType)x);
```
其中,`YourEnumType`为你要转换的枚举类型。这里使用了Lambda表达式将int类型的元素转换为YourEnumType类型的元素。
阅读全文