如何在 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:让我们为这个问题的目的,比我们已经认为的枚举是这段代码中要走的路,而且我已经检查了其他类型的列表的用处。
对这个问题的任何改进或澄清要求也将不胜感激
。提前致谢
枚举
没有索引,但它们确实具有基础值...在您的情况下,空和地板分别为 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 属性之外。