Як атрымаць значэнне з апісання з дапамогай Enum

У мяне ёсць пералік як

public enum Test {a = 1, b, c, d, e }

і затым у мяне ёсць метад, дзе я перадаць «а» ў якасці параметру, але мне трэба, каб атрымаць адпаведнае значэнне з пералічэння і вяртання Integer значэнне з метаду

public int Getvalue(string text)        
{                
    int value = //Need to convert text in to int value.    
    return value;   
}

Я перадаю тэкст як «а» або «б» або «у», але маюць патрэбу ў 1, 2 ці 3 у якасці выніку. Я паспрабаваў нейкае рашэнне знайсці ў Інтэрнэце, але ўсё, здаецца, хоча мяне ёсць [Апісанне] тэг дададзены ў пералічэнні, каб атрымаць значэнне.

Ці можна атрымаць значэнне з апісання ў пералічаныя ў C #?

2
@RogerRowland, АП не трэба апісанне, так што я не думаю, што яго дублікат
дададзена аўтар Habib, крыніца
@RogerRowland, я думаю, што няма, ОП прашу пры даданні апісання неабходнаму ?, Я не думаю, што гэта так, Enum.Parse можна выкарыстоўваць для разбору радка ў ENUM, а затым атрымаць значэнне з дапамогай простага ліцця ,
дададзена аўтар Habib, крыніца
@RogerRowland, не хвалюйцеся, здараецца ўвесь час, пытанне з загалоўка выглядае вельмі падобна на звязаны пытанне.
дададзена аўтар Habib, крыніца
Магчымы дублікат - stackoverflow.com/q/1033260/2065121
дададзена аўтар Roger Rowland, крыніца
@Habib - Вы ўпэўненыя? Прачытайце магчымы дублікат яшчэ раз - гэта амаль ідэнтычныя.
дададзена аўтар Roger Rowland, крыніца
@Habib - добра, мая памылка, выбачайце - гэта <�я> не </я> дублікат! Я буду чытаць больш уважліва ў наступны раз ...
дададзена аўтар Roger Rowland, крыніца
@Habib - ды і раздражняльна, у адпаведнасці з мета, мы <�я> яшчэ </я> не можа адмяніць блізкія галасы!
дададзена аўтар Roger Rowland, крыніца

8 адказы

Вам не трэба, каб дадаць апісанне тэгаў, да таго часу, як вы перадаеце значэнне пералічэння ў выглядзе радка, так як а , б , існуе ў пералічэнні, вы можаце выкарыстоўваць Enum.Parse разабраць радок Enum тэст , а затым вы можаце атрымаць адпаведнае значэнне, як:

var value = Enum.Parse(typeof(Test), "a");
int integerValue = (int)value;

Ці вы можаце выкарыстоўваць Enum.TryParse які не выклікае выключэнне ў выпадку памылковага ўводу радка. як:

Test temp;
int integerValue;
if (Enum.TryParse("a", out temp))
{
    integerValue2 = (int)temp;
}
4
дададзена

Вам не трэба, каб дадаць апісанне тэгаў, да таго часу, як вы перадаеце значэнне пералічэння ў выглядзе радка, так як а , б , існуе ў пералічэнні, вы можаце выкарыстоўваць Enum.Parse разабраць радок Enum тэст , а затым вы можаце атрымаць адпаведнае значэнне, як:

var value = Enum.Parse(typeof(Test), "a");
int integerValue = (int)value;

Ці вы можаце выкарыстоўваць Enum.TryParse які не выклікае выключэнне ў выпадку памылковага ўводу радка. як:

Test temp;
int integerValue;
if (Enum.TryParse("a", out temp))
{
    integerValue2 = (int)temp;
}
4
дададзена

For Framework >= 4.0 you can use Enum.TryParse

public int GetValue(string text)
{
    Test t;
    if (Enum.TryParse(text, out t)
        return (int)t;       
   //throw exception or return a default value
}
3
дададзена

For Framework >= 4.0 you can use Enum.TryParse

public int GetValue(string text)
{
    Test t;
    if (Enum.TryParse(text, out t)
        return (int)t;       
   //throw exception or return a default value
}
3
дададзена

For Framework >= 4.0 you can use Enum.TryParse

public int GetValue(string text)
{
    Test t;
    if (Enum.TryParse(text, out t)
        return (int)t;       
   //throw exception or return a default value
}
3
дададзена

Generic памочнік, які дае магчымасць атрымаць любы тып INT значэння Пералічэнні

    public static int? GetValue(string text)
    {
        var enumType = typeof (T);
        if (!enumType.IsEnum)
            return null;

        int? val;
        try
        {
            val = (int) Enum.Parse(enumType, text);
        }
        catch (Exception)
        {
            val = null;
        }

        return val;
    }
1
дададзена

Generic памочнік, які дае магчымасць атрымаць любы тып INT значэння Пералічэнні

    public static int? GetValue(string text)
    {
        var enumType = typeof (T);
        if (!enumType.IsEnum)
            return null;

        int? val;
        try
        {
            val = (int) Enum.Parse(enumType, text);
        }
        catch (Exception)
        {
            val = null;
        }

        return val;
    }
1
дададзена

Generic памочнік, які дае магчымасць атрымаць любы тып INT значэння Пералічэнні

    public static int? GetValue(string text)
    {
        var enumType = typeof (T);
        if (!enumType.IsEnum)
            return null;

        int? val;
        try
        {
            val = (int) Enum.Parse(enumType, text);
        }
        catch (Exception)
        {
            val = null;
        }

        return val;
    }
1
дададзена