4

重複の可能性:
C# で文字列を列挙型に変換するにはどうすればよいですか?
int 値を返す列挙型

私は列挙を宣言しました:-

public enum Car
        {
            SELECT = 0,
            AUDI = 1,
            NISSAN = 2,
            HONDA = 3,
            LINCOLN = 4
        } 

今、一致する列挙型の int 値が必要です:-

private int GetCarType(string CarName)
        {
            foreach(var item in Enum.GetNames(typeof(Car))
            {
                if (item.ToLower().Equals(CarName.ToLower()))
                    //return int value of Enum of matched item; ???????
            }

予想される結果:-

int i = GetCarType(CarName); //suppose CarName is AUDI, it should return 1;
Console.write(i);

Result :- 1

列挙型の値を取得するにはどうすればよいですか? そしてより良いコーディングの練習。

4

4 に答える 4

6

文字列を列挙型に変換する場合は、名前を反復処理するのではなく、Enum.Parseを使用する必要があります。

次に、整数にキャストします。

var iAsInteger = (Int32)i;
于 2012-04-18T17:00:24.280 に答える
3
var result = (int)System.Enum.Parse(typeof(Car), carName)

http://msdn.microsoft.com/en-us/library/essfb559.aspx

これはあなたの関数を置き換えますGetCarType。列挙型の名前を繰り返す必要はもうありません。

于 2012-04-18T17:02:24.233 に答える
3

列挙型を int のようにキャストするだけです

int i=(int)Car.Audi;

これはあなたに1を与えるでしょう

int i=(int)Car.Select;

これはあなたに0を与えるでしょう

于 2012-04-18T17:01:33.267 に答える
1
int i = (int) Enum.Parse(typeof(Car), "AUDI");
于 2012-04-18T17:06:02.173 に答える