在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"

如何解析相同

在c#中使用整型枚举作为数组的索引而不进行转换

创建自定义集合类,并添加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()];