我无法找到与单向枚举相关的问题,我认为与二维枚举有所不同,所以让我们开始。
让我说我有这个枚举:
public enum TileType {Empty, Floor};
我在班上有这些元素:
private TileType _type = TileType.Empty;
public TileType Type {
get {
return _type;
}
set {
TileType oldType = _type;
_type = value;
}
}
我怎样才能得到"空"或"地板"使用索引(int)在C#中检索它们?
而且,就像一个没有任何优先权的副问题......
您如何检索存储在' oldType'中的信息? TileType? (这个子问题,如果你想要它回答它,请在评论plz中回答)
PS:让我们认为这个问题的目的比我们已经想到的要好,而不是枚举是这个代码的方式,而且我已经检查了其他类型列表的有用性。
对这个问题或澄清要求的任何改进都会非常令人沮丧
提前致谢
答案 0 :(得分:1)
枚举没有编入索引,但它们确实有基础值...在你的情况下,Empty和Floor分别为0和1。
要引用TileType.Floor
,您可以使用:
var floor = (TileType)1;
由于您询问了Dictionary.GetKey()
之类的内容,Enum
类上有可用的方法,但没有完全相同的方法。
您可以编写自己的扩展方法。试一试,例如:
public static class EnumExt
{
public static T GetKey<T>(int value) where T : struct
{
T result;
if (!Enum.TryParse(value.ToString(), out result))
// no match found - throw an exception?
return result;
}
}
然后你可以打电话:
var floor = EnumExt.GetKey<TileType>(1);
答案 1 :(得分:0)
尝试这个,我相信类似的问题? Retrieve value of Enum based on index - c#
您应该将oldType作为Type属性之外的变量。