0

私は次のような列挙型を持っています:

public enum Global
{
  txt_test = 123
}

今、私はこのような呼び出しを使いたいです:

var text = lib.Get(Global.txt_test);

方法:

public TextString Get(Enum enumeration)
{
  string name = enumeration.ToString();
  int index = ?;  // (int)enumeration not working      
  ...
}

この場合、列挙型のインデックスを取得する方法は? それとも、私はそれをまったく間違っていますか?

ありがとうございました。

解決:

public TextString Get(Enum enumeration)
{
   string name = enumeration.ToString();
   int index = Convert.ToInt32(enumeration);    
   ...
}
4

2 に答える 2

5

列挙int型は、値を取得するために変換できます。

public TextString Get(Enum enumeration)
{
  string name = enumeration.ToString();
  int index = Convert.ToInt32(enumeration);

  // ...
  return null;
}

列挙型はデフォルトで int 型であるため、これが機能することに注意してください。列挙型は、 long のような他の値型にすることができます:

enum Range : long { Max = 2147483648L, Min = 255L };

この場合、変換の精度が失われます。

于 2013-11-08T16:11:52.600 に答える
0

文字列として列挙値 (「インデックス」と呼んでいるもの) のみが必要な場合は、ここに記載されているようにカスタム形式の文字列を使用するのが最善の方法です: http://msdn.microsoft.com/en-us/library/c3s1ez6e %28v=vs.110%29.aspx

例えば:

public TextString Get(Enum enumeration)
{
  string index = enumeration.ToString("D");

  // ...
  return null;
}
于 2013-11-08T16:27:59.287 に答える