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

本文关键字:数组 获取 元素 简单 | 更新日期: 2023-09-27 18:00:34

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

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

然而,典型的表达a[x]不起作用,为什么?

感谢

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

好吧,因为Enum.GetValues不是泛型的。

如果你写:

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

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

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

在我看来,正确的方法是:

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

然后通过检索位置上的元素

a.GetValue(elementsIndex); 

在为DB SP params转换自定义类时,我使用了以下代码来处理emms,一直有效。

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

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

如果您正在Enum中查找名称,请尝试:

string[] names = Enum.GetNames(typeof(Typ));
相关文章: