VB.NETで文字列を列挙して値を列挙するにはどうすればよいですか?VB.NETでEnum値に文字列をパースする
例私はこの列挙を持っている:
Public Enum Gender
NotDefined
Male
Female
End Enum
は、どのように私はGender
enumのMale
値に文字列 "男性" を変換することができますか?
VB.NETで文字列を列挙して値を列挙するにはどうすればよいですか?VB.NETでEnum値に文字列をパースする
例私はこの列挙を持っている:
Public Enum Gender
NotDefined
Male
Female
End Enum
は、どのように私はGender
enumのMale
値に文字列 "男性" を変換することができますか?
Dim val = DirectCast([Enum].Parse(GetType(Gender), "Male"), Gender)
Enum.TryParseを参照してください。私は性別列挙の男性値に文字列「男性」を変換することができますどのように
Parse()メソッドのみがあります。 Enum.TryParse()メソッドはどこにありますか? –
@David:Enum.TryParse()は.NET 4 –
で利用可能です。正しいリンクです。答えは30文字以内で編集できません:http://msdn.microsoft.com/en-us/library/dd783499 .aspx –
?
受け入れられるソリューションは、Enumオブジェクトを返します。
dim MyGender as string = "Male"
dim Value as integer
Value = DirectCast([Enum].Parse(GetType(Gender), MyGender), Integer)
もそれを行うことができますこの方法:あなたはこのソリューションをしたい値に戻すためにあなたは、解析は大文字と小文字を区別したい場合は
value = cInt([enum].Parse(GetType(Gender), MyGender))
すると、次を使用することができます。
[Enum].Parse(Gender, DirectCast(MyGender, String), True)
これは処理されますdim MyGender as string = "Male"
またはdim MyGender as string = "male"
タイプがわからず、一般的に変換したい場合はどうすればいいですか?この例では 'Male'を指定しました。私はデータベースに列挙型の値を保存し、それを元に戻そうとしています。この場合、私はtoStringを変換して以来保存した実際の値を知らないかもしれません。 – Smith
関連するEnum型を "Namespaces.EnumName"という値で保存する必要があります。リフレクションを使用して名前でTypeオブジェクトを取得すると、Dim t = Type.GetType( "Namespaces.EnumName")、 'GetType(Gender)'ではなく 't'を渡すことができます。また、結果の値をキャストする必要があります。これを行うには、コードを記述する際に特定の列挙型を知っている必要があります。 – Kamarey
.NET 4.0では構文は単純です: 'Parse(EnumType As System.Type、value As String)As Object' – motto