我有一个枚举:
public enum MyColours
{
Red,
Green,
Blue,
Yellow,
Fuchsia,
Aqua,
Orange
}
我有一个字符串:
string colour = "Red";
我希望能够返回:
MyColours.Red
发自:
public MyColours GetColour(string colour)
到目前为止,我有:
public MyColours GetColours(string colour)
{
string[] colours = Enum.GetNames(typeof(MyColours));
int[] values = Enum.GetValues(typeof(MyColours));
int i;
for(int i = 0; i < colours.Length; i++)
{
if(colour.Equals(colours[i], StringComparison.Ordinal)
break;
}
int value = values[i];
// I know all the information about the matched enumeration
// but how do i convert this information into returning a
// MyColour enumeration?
}
如你所见,我有点卡住了。是否存在按值选择枚举数的方法。类似于:
MyColour(2)
会导致
MyColour.Green
发布于 2010-02-19 00:36:29
可以将int转换为枚举
(MyColour)2
还有一个选项是Enum.Parse
(MyColour)Enum.Parse(typeof(MyColour), "Red")
发布于 2018-06-27 23:20:07
考虑到.NET (+核心)和C# 7的最新和最大变化,以下是最佳解决方案:
var ignoreCase = true;
Enum.TryParse("red", ignoreCase , out MyColours colour);
颜色变量可以在Enum.TryParse范围内使用
发布于 2010-02-19 00:38:17
您所需要的就是Enum.Parse。
https://stackoverflow.com/questions/2290262
复制相似问题