c# 在不知枚举类型的实际类型的情况下,不用循环和Linq如何将int[]转为任意枚举类型的数组
时间: 2024-03-13 16:45:08 浏览: 23
在不知道枚举类型实际类型的情况下,可以使用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类型的元素。
c#将string 类型的字符串转化为int数组
要将一个string类型的字符串转化为int数组,你可以使用C#中的Split()方法将字符串拆分成一个字符串数组,然后使用LINQ的Select()方法将每个字符串转换为int类型。下面是一个示例代码:
```csharp
string str = "1 2 3 4 5";
int\[\] arr = str.Split(' ').Select(int.Parse).ToArray();
```
在这个示例中,我们首先定义了一个包含数字的字符串`str`。然后,我们使用Split()方法将字符串拆分成一个字符串数组,其中每个元素都是一个数字字符串。我们使用空格作为分隔符。接下来,我们使用LINQ的Select()方法将每个字符串转换为int类型。最后,我们使用ToArray()方法将结果转换为int数组。
请注意,这个示例假设输入的字符串中的数字之间是用空格分隔的。如果你的字符串中使用了其他分隔符,你需要相应地修改Split()方法的参数。
希望这可以帮助到你!