如何在 C# 中为变量分配不同的枚举

本文关键字:分配 枚举 变量 | 更新日期: 2023-09-27 17:50:55

我正在尝试做这样的事情。

enum Birds {
    Crow,
    Sparrow,
    Hawk
}
enum Bugs {
    Ant,
    Spider,
    Scorpion
}
if (featherless == true) {
    var beast = Bugs;
} else {
    var beast = Birds;
}
string a = (beast)2.ToString();

我有五行代码适用于提供的枚举。 我无法想象我必须复制这五行。像上面这样的东西必须能够使用... 上面的结构当然会导致 beast 超出范围,我无法将 var 作为参数传递。 我知道这是一个令人头疼的时刻,但我已经搜索过,找不到类似的问题。

如何在 C# 中为变量分配不同的枚举

var beastType = featherless ? typeof(Bugs) : typeof(Birds);
var a = Enum.GetValues(beastType).GetValue(2).ToString();

如果featherless为真,则将分配Hawk,如果为假,则将分配Scorpion

编辑 0如果您只需要名称,也许这将是一个更好的解决方案:

var beastType = featherless ? typeof(Bugs) : typeof(Birds);
var a = Enum.GetName(beastType, 2);

编辑 1如果您需要一个对象进行进一步的操作,也许您可以尝试这样做:

var beastType = featherless ? typeof(Bugs) : typeof(Birds);
var beast = Enum.ToObject(beastType, 2);
var a = beast.ToString();