2011-11-16 13 views
5

私はまたstring pet = "Dog"を持っているこの'name'の文字列表現からenum値を選択するにはどうすればよいですか?

public enum PetType 
{ 
    Dog = 1, 
    Cat = 2 
} 

のような列挙型を持っています。 1を返すには?私が考えている擬似コードは次のとおりです。

select Dog_Id from PetType where PetName = pet 
+0

が重複する可能性のようなパラメータとして文字列を使用できますか? c#](http://stackoverflow.com/questions/1130377/how-do-i-create-an-enum-from-a-string-representation-c-sharp) – nawfal

答えて

13

は、intにキャスト、文字列から列挙型の値を取得するためにEnum.Parseメソッドを使用します。

string pet = "Dog"; 
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet); 
int petValue = (int)petType; 
0
(PetType)Enum.Parse(typeof(PetType), pet) 
3

あなたは.NETを使用している場合4あなたはEnum.TryParse

PetType result; 
if (Enum.TryParse<PetType>(pet, out result)) 
    return (int)result; 
else 
    throw something with an error message 
3

その他は、すでにEnum.Parseを(使用することを示唆した使用)しかし、この方法には注意してくださいすることができ列挙型の名前を解析するだけでなく、その値に一致させようとするためです。 は、それは明らかだが、小さな例をチェックしてみましょうするには:

PetType petTypeA = (PetType)Enum.Parse(typeof(PetType), "Dog"); 
PetType petTypeB = (PetType)Enum.Parse(typeof(PetType), "1"); 

両方の結果は、呼び出しは(当然のint型にキャストすることができます)PetType.Dogになります解析します。

ほとんどの場合、このような動作はOKですが、必ずしもそうではありません。これは、Enum.Parse()メソッドの動作を覚えておく価値があります。

0

私は文字列表現から列挙型を作成するにはどうすればよい[の

int pet=1; 
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet.ToString()); 

それとも

string pet="Dog"; 
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet); 
+0

既に番号がある場合は、 'petType =(PetType)1' –

+0

はい、それは他の方法で表示された結果であり、この回答は他のコメントにありました –

関連する問題