我有一个枚举:
[Flags]
public enum MyColours{
Red = 1,
Green = 2,
Blue = 4,
Yellow = 8,
Orange = 16,
};
现在我有一个字符串列表:
string[] colour = new string { "Red", "Orange", "Blue"};
我希望能够为与枚举匹配的搅拌返回true。
答案 0 :(得分:4)
问题很糟糕。
我想你想看看你的枚举中的值是否与参数匹配,并根据该参数返回true?
bool IsInsideEnum(string value) {
foreach (var enumVal in Enum.GetValues(typeof(MyColors))
if(Enum.GetName(typeof(MyColors), enumVal) == value)
return true;
return false;
}
答案 1 :(得分:1)
你的问题真的很模糊。但我假设你的意思是这样的
var i
if (colour[0] == Enum.GetName(typeof(MyColors), 1)) //"Red" == "Red"
{
return true;
}
正是您要找的
typeof(enumName)后跟enumIndex
答案 2 :(得分:1)
public class Nizovi {
int[] anArray ;
public Nizovi(){
this.anArray = new int[10];
}
}
希望这会有所帮助
答案 3 :(得分:1)
使用Enum.GetName(Enum,int)
获取枚举字符串
答案 4 :(得分:0)
更好的答案 - 少一点:
var values = Enum.GetNames(typeof(MyColours)).ToList();
string[] colour = new string[] { "Red", "Orange", "Blue" };
List<string> colourList = colours.ToList();
ConatainsAllItems(values, colourList);
public static bool ContainsAllItems(List<T> a, List<T> b)
{
return !b.Except(a).Any();
}
如果匹配值
,则返回true答案 5 :(得分:0)
您可以使用Enum.TryParse
方法,如下所示:
MyColours c;
from s in colour select new {Value = s, IsAvailable = Enum.TryParse(s, true, out c)}
或者您可以使用该方法为loop
做一个数字中的每个值。
答案 6 :(得分:0)
非常直接,为此Enum.IsDefined
:
string[] colour = new string[] { "Red", "Orange", "Blue", "White" };
var result = colour
.Select(c => Enum.IsDefined(typeof(MyColours), c));
测试
// True, True, True, False
Console.Write(String.Join(", ", result));
答案 7 :(得分:0)
试试这个,
foreach(string s in colour)
{
Enum.GetNames(typeof(MyColours)).Contains(s);
}