回答:
baseKey choice;
if (Enum.TryParse("HKEY_LOCAL_MACHINE", out choice)) {
uint value = (uint)choice;
// `value` is what you're looking for
} else { /* error: the string was not an enum member */ }
.NET 4.5より前は、次のことを行う必要がありました。これはエラーが発生しやすく、無効な文字列が渡されたときに例外をスローします。
(uint)Enum.Parse(typeof(baseKey), "HKEY_LOCAL_MACHINE")
var value = (uint)Enum.Parse(typeof(basekey), "HKEY_LOCAL_MACHINE", true);
このコードスニペットは、文字列から列挙値を取得する方法を示しています。文字列から変換するには、Enum.Parse()
3つのパラメーターを取る静的メソッドを使用する必要があります。1つ目は、検討する列挙型です。構文は、typeof()
角かっこで囲まれた列挙型クラスの名前が続くキーワードです。2番目のパラメーターは変換される文字列で、3番目のパラメーターはbool
変換を行うときに大文字と小文字を無視するかどうかを示します。
最後に、Enum.Parse()
実際にはオブジェクト参照を返すことに注意してください。つまり、これを明示的に必要な列挙型に変換する必要がありますtype(string
、int
など)。
ありがとうございました。
代替ソリューションは次のとおりです。
baseKey hKeyLocalMachine = baseKey.HKEY_LOCAL_MACHINE;
uint value = (uint)hKeyLocalMachine;
あるいは単に:
uint value = (uint)baseKey.HKEY_LOCAL_MACHINE;
"HKEY_LOCAL_MACHINE"
を値に変換しませんでした。OPが尋ねたように、シンボルHKEY_LOCAL_MACHINE
を値に変換しました。大きく異なる獣。