如何在C#中从简单数组中获取元素
本文关键字:数组 获取 元素 简单 | 更新日期: 2023-09-27 18:00:34
我需要获取枚举的值,所以我使用以下命令:
Array a = Enum.GetValues(typeof(Typ));
然而,典型的表达a[x]不起作用,为什么?
感谢
好吧,因为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));