使用整数枚举作为C#中数组的索引而不进行转换?
我收集了大量数据,需要将其存储在字符串数组中 然后,该数组作为回调事件传递到另一个类中 所以我需要使用索引作为枚举值,以便外部人员可以轻松地读取字符串值 为了这个我试过这个使用整数枚举作为C#中数组的索引而不进行转换?,c#,enums,C#,Enums,我收集了大量数据,需要将其存储在字符串数组中 然后,该数组作为回调事件传递到另一个类中 所以我需要使用索引作为枚举值,以便外部人员可以轻松地读取字符串值 为了这个我试过这个 public enum PublicData : int { CardNo = 0, CardName = 1, Address = 2, //etc.... } 然后我通过 string[] Publicdata = new string[iLength]; Publicdata[PublicData
public enum PublicData : int
{
CardNo = 0,
CardName = 1,
Address = 2,
//etc....
}
然后我通过
string[] Publicdata = new string[iLength];
Publicdata[PublicData.CardNo] = cardNovalue;
但这里我得到了“索引类型无效-错误”
如何解决此问题。或者您可以使用扩展方法:
public static class MyEnumExtensions
{
public static int Val(this PublicData en)
{
return (int)en;
}
}
用法:
Publicdata[PublicData.Address.Val()];
或者您可以使用扩展方法:
public static class MyEnumExtensions
{
public static int Val(this PublicData en)
{
return (int)en;
}
}
用法:
Publicdata[PublicData.Address.Val()];
创建自定义集合类,并将PublicData枚举作为索引器添加索引器属性
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];
}
}
创建自定义集合类,并将PublicData枚举作为索引器添加索引器属性
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];
}
}
只需转换枚举值
Publicdata[(int)PublicData.CardNo] = cardNovalue;
只需转换枚举值
Publicdata[(int)PublicData.CardNo] = cardNovalue;
这里有一个讨论:在我看来,这些不应该是枚举成员,而是数据类的属性。在这里有一个讨论:在我看来,这些不应该是枚举成员,而是数据类的属性。@bati,亲爱的,我知道这一点,但正如我在问题标题中提到的,我需要答案而不转换为int。为什么不直接返回(int)en;@巴蒂,亲爱的,我知道这一点,但正如我在问题标题中提到的,我需要答案,而不转换为int。为什么不直接返回(int)en;寻找一个简单或内置的c#答案。但这似乎是在类中转换为int,如果在线程例程中调用它,我不知道性能如何。最后,转换为int比这更好,因为我需要代码性能。感谢您的ping。正在为此查找简单或内置的c#答案。但这似乎是在类中转换为int,如果在线程例程中调用它,我不知道性能如何。最后,转换为int比这更好,因为我需要代码性能。谢谢你的ping。