3

列挙型と比較する文字列がある場合、列挙型からインデックス整数 (この場合は 0) を取得するにはどうすればよいですか?

列挙:

public enum Animals
{
    Dog = 0,
    Cat = 1
}

string myAnimal = "Dog";

明らかに、次の行は機能しませんが、私が達成したいことを理解するのに役立つかもしれません:

int animalNumber = (int)Animals.[myAnimal];
4

2 に答える 2

13

このような?

int animalNumber = (int)Enum.Parse(typeof(Animals), "Dog");
于 2012-11-06T18:54:51.490 に答える
3
Types t;
if(Enum.TryParse(yourString, out t)) // yourString is "Dog", for example
{
    // use t           // In your case (int)t
}
else
{
    // yourString does not contain a valid Types value
}

また

try
{
    Types t = (Types)Enum.Parse(typeof(Types), yourString);
    // use t           // In your case (int)t
}
catch(ArgumentException)
{
    // yourString does not contain a valid Types value
}
于 2012-11-06T19:11:10.657 に答える