如何在 C# 中的单双枚举中通过枚举中的索引 (int) 获取一个值

本文关键字:枚举 int 获取 一个 单双 索引 | 更新日期: 2023-09-27 18:31:05

我找不到与单维枚举相关的这个问题,我认为与双维枚举不同,所以让我们开始吧。

假设我有这个枚举:

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中的信息?(这个子问题,如果你想让它回答,请在评论中回答)

PS:让我们为这个问题的目的,比我们已经认为的枚举是这段代码中要走的路,而且我已经检查了其他类型的列表的用处。

这个问题的任何改进或澄清要求也将不胜感激

提前致谢

如何在 C# 中的单双枚举中通过枚举中的索引 (int) 获取一个值

枚举

没有索引,但它们确实具有基础值...在您的情况下,空和地板分别为 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);

试试这个,我相信类似的问题?基于索引检索枚举的值 - c#

您应该将 oldType 作为变量放在 Type 属性之外。