使用整数枚举作为C#中的数组的索引而不转换?
我有一个大型的数据集合,我需要在字符串数组中存储相同的数据。使用整数枚举作为C#中的数组的索引而不转换?
然后,此数组作为回调事件传递到另一个类中。
所以我需要使用索引作为枚举值,以便外部人员可以轻松地读取字符串值。
为了这个,我想这一点,
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()];
@ bati,亲爱的,我知道这一点,但正如我在我的问题标题中提到的,我需要答案而不转换为int。 –
为什么不只是** return(int)en; ** – Innat3
创建自定义集合类,并与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];
}
}
寻找一个简单的或内置的C#答案。但是这似乎在类内部转换为int,并且我不知道如果我在线程例程中调用它的性能。最后只是转换为int比这更好,因为我需要代码的性能。感谢ping。 –
就投你的枚举值
Publicdata[(int)PublicData.CardNo] = cardNovalue;
有一个关于这个讨论在这里:http://stackoverflow.com/questions/443935/indexing-arrays-with-enums-in-c-sharp –
听起来像那些不应该是枚举成员,而是数据类的属性。 – SimpleVar