C# 获取枚举[]的int值
我有一种方法,例如:C# 获取枚举[]的int值,c#,.net,enums,C#,.net,Enums,我有一种方法,例如: public void DoIt(params MyEnum[] channels) { } 有没有办法获取参数中枚举的int值 我尝试了var myInts=channels.Select(x=>x.Value)但是运气不好您可以在Select子句中执行强制转换: var myInts = channels.Select(x => (int)x); 这应该做到: public void DoIt(params MyEnum[] channels) { i
public void DoIt(params MyEnum[] channels)
{
}
有没有办法获取参数中枚举的int值
我尝试了
var myInts=channels.Select(x=>x.Value)
但是运气不好您可以在Select子句中执行强制转换:
var myInts = channels.Select(x => (int)x);
这应该做到:
public void DoIt(params MyEnum[] channels)
{
int[] ret = channels.Select(x => ((int)x)).ToArray();
}
你可以做:
var myInts = channels.Select(e => (int)e);
或作为LINQ查询:
var myInts = from e in channels select (int)e;
然后,您可以在
myInts
上调用ToArray()
或ToList()
来获取MyEnum[]
或列表
var myInts=channels。选择(x=x.Value)
这不起作用,因为=/code>需要是=>(int)x
我认为var myInts=channels.Select(x=>(int)x).ToArray()
将执行您想要的操作。无需LINQ即可执行相同操作的另一种方法:
var vals = Array.ConvertAll(channels, c =>(int)c);
var myInts=channels.Cast();
获取枚举数组背后的想法是什么?@shahkalpesh我猜“表示零、一或多个值,用枚举表示,但在内部使用它们的基本整数值”@MarcGravel:谢谢。我猜OP正在寻找使用FlagsAttribute
组合枚举值。此外,如果传递数组,枚举值可以传递多次。在这种情况下,您肯定会使用按位枚举吗?编辑-什么是shahkalpeshsaid@Rebel这并不一定意味着它适合[旗帜]的使用,尽管没有文档记录。
var myInts = channels.Cast<int>();
var ints = (int[]) (object) channels;