如何从C#中的简单数组中获取元素?

时间:2011-06-29 06:58:59

标签: c# arrays

我需要获取枚举的值,所以我使用以下命令:

Array a = Enum.GetValues(typeof(Typ));

然而,典型的表达方式      斧头] 不起作用,为什么?

由于

4 个答案:

答案 0 :(得分:4)

好吧,因为Enum.GetValues不是通用的。

如果你写:

var a = Enum.GetValues(typeof(Typ));
Console.WriteLine(a.GetType());

你会得到:“Namespace.Typ []”。但由于方法不是通用的,编译器不能根据提供的类型更改返回类型,因此该方法返回System.Array,它是数组的基类型,您必须使用类型转换将其向下转换为预期类型,例如:

Typ[] a = (Typ[])Enum.GetValues(typeof(Typ));

答案 1 :(得分:2)

我认为这样做的正确方法是:

Array a = Enum.GetValues(typeof(Typ));

然后通过以下方式检索位置处的元素:

a.GetValue(elementsIndex); 

答案 2 :(得分:0)

我在转换DB SP参数的自定义类时使用以下代码来处理emums,它始终有效。

    public static object ParamValue<T>(Enum value)
    {
        if (value == null)
            return System.DBNull.Value;
        else
            return (T)Enum.Parse(value.GetType(), value.ToString());
    }

答案 3 :(得分:-1)

根据OP的评论,他可能实际上并不感兴趣Enum,而是名称。这种区别很容易让初学者感到困惑。 提示:当您提出涉及错误的问题时(例如“不起作用,为什么?”),那么包含错误消息通常会有所帮助。

如果您要在Enum中查找姓名,请尝试:

string[] names = Enum.GetNames(typeof(Typ));