如何在枚举中通过index(int)获取一个值,在C#中的单向枚举中

时间:2016-01-19 03:01:16

标签: c# indexing enums get int

我无法找到与单向枚举相关的问题,我认为与二维枚举有所不同,所以让我们开始。

让我说我有这个枚举:

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:让我们认为这个问题的目的比我们已经想到的要好,而不是枚举是这个代码的方式,而且我已经检查了其他类型列表的有用性。

对这个问题或澄清要求的任何改进都会非常令人沮丧

提前致谢

2 个答案:

答案 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属性之外的变量。