【ハルシオンブログ】stringからenumへの変換
こんにちは。
大坂です。
stringからenumに変換したいときがあったのでそのお話。
適当にこんなenumがあったとして。
方法その1「Enum.Parse」を使う。
実行結果。

変換に失敗するとエラーが返ってきますね。
方法その2「Enum.TryParse」を使う。
実行結果。

変換に失敗してもエラーは帰ってこないで、enumの1個目の値が入ってますね。
戻り値でfalseが返ってくるので、それを使って判定するとよさそうでしょうか。
こんな感じでstringからenumに変換できます。
どちらの方法でもできますが、エラーが返ってくるのはいまいちなので、「Enum.TryParse」の方がいいですかね。
では今週もこれにてノシ
大坂です。
stringからenumに変換したいときがあったのでそのお話。
適当にこんなenumがあったとして。
enum TestEnum {
Test_1,
Test_2,
Test_3,
}
方法その1「Enum.Parse」を使う。
// Perseで変換成功
TestEnum testEnum_1 = (TestEnum)Enum.Parse(typeof(TestEnum), "Test_1");
Debug.Log($"testEnum_1:{testEnum_1}");
// Perseで変換 TestEnumにTest_4がないためエラーになる
TestEnum testEnum_2 = (TestEnum)Enum.Parse(typeof(TestEnum), "Test_4");
Debug.Log($"testEnum_2:{testEnum_2}");
実行結果。

変換に失敗するとエラーが返ってきますね。
方法その2「Enum.TryParse」を使う。
// TryPerseで変換成功し、Trueが返ってくる
bool testBool_1 = Enum.TryParse<TestEnum>("Test_2", out TestEnum testEnum_3);
Debug.Log($"testEnum_3:{testEnum_3}:{testBool_1}");
// TryPerseで変換 TestEnumにTest_5がないが、Falseで返ってきて、testEnum_4にはTestEnum.Test_1が入る。
bool testBool_2 = Enum.TryParse<TestEnum>("Test_5", out TestEnum testEnum_4);
Debug.Log($"testEnum_4:{testEnum_4}:{testBool_2}");
実行結果。

変換に失敗してもエラーは帰ってこないで、enumの1個目の値が入ってますね。
戻り値でfalseが返ってくるので、それを使って判定するとよさそうでしょうか。
こんな感じでstringからenumに変換できます。
どちらの方法でもできますが、エラーが返ってくるのはいまいちなので、「Enum.TryParse」の方がいいですかね。
では今週もこれにてノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】UnityのEventTrigger処理呼び出しをコードで書く方法。 | 【ハルシオンブログ】プロジェクトウインドウのファイル検索で複数文字列検索をする方法。 »
コメント
| h o m e |