通过名称获取枚举成员的价值?

时间:2014-02-04 19:32:24

标签: c# .net enums

假设我有变量,其值(例如"listMovie")是enum成员的名称:

public enum Movies
{
    regMovie = 1,
    listMovie = 2 // member whose value I want
}

在这个例子中,我想获得值2。这可能吗?这是我试过的:

public static void getMoviedata(string KeyVal)
{
    if (Enum.IsDefined(typeof(TestAppAreana.MovieList.Movies), KeyVal))
    {
        //Can print the name but not value
        ((TestAppAreana.MovieList.Movies)2).ToString(); //list
        Enum.GetName(typeof(TestAppAreana.MovieList.Movies), 2);
    }
}

4 个答案:

答案 0 :(得分:29)

假设KeyVal是表示某个枚举名称的字符串,您可以通过以下方式执行此操作:

int value = (int)Enum.Parse(typeof(TestAppAreana.MovieList.Movies), KeyVal);

答案 1 :(得分:4)

您想从字符串名称中获取Enum值。因此,您可以使用Enum.Parse方法。

int number = (int)Enum.Parse(typeof(TestAppAreana.MovieList.Movies), KeyVal)

您也可以尝试Enum.TryParse来检查解析是否成功。

Movies movie;
if (Enum.TryParse(KeyVal, true, out movie))
{

}

答案 2 :(得分:1)

使用:

var val= (int)Enum.Parse(typeof(TestAppAreana.MovieList.Movies), KeyVal)

答案 3 :(得分:-1)

不确定过去,因为我是 C# 新手,但截至今天,这有效并给出了 2 的值:

axis=1