在c#中使用整型枚举作为数组的索引而不进行转换
本文关键字:索引 转换 数组 整型 枚举 | 更新日期: 2023-09-27 18:18:16
我有一个大的数据集合,我需要将其存储在字符串数组中。
这个数组然后作为回调事件传递给另一个类。
所以我需要使用索引作为枚举值,以便外部人员可以轻松地读取字符串值。
for this I tried this,
public enum PublicData : int
{
CardNo = 0,
CardName = 1,
Address = 2,
//etc....
}
那么我通过
string[] Publicdata = new string[iLength];
Publicdata[PublicData.CardNo] = cardNovalue;
但是这里我得到"invalid type for index - error"
如何解析相同
创建自定义集合类,并添加indexer属性,将PublicData enum作为indexer。
public enum PublicData : int
{
CardNo = 0,
CardName = 1,
Address = 2,
}
public class PublicdataCollection
{
private readonly string[] _inner;
public string this[PublicData index]
{
get { return _inner[(int)index]; }
set { _inner[(int) index] = value; }
}
public PublicdataCollection(int count)
{
_inner = new string[count];
}
}
直接转换你的enum值
Publicdata[(int)PublicData.CardNo] = cardNovalue;
或者您可以使用扩展方法:
public static class MyEnumExtensions
{
public static int Val(this PublicData en)
{
return (int)en;
}
}
用法:
Publicdata[PublicData.Address.Val()];