FC2ブログ
    08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】stringからenumへの変換 

    こんにちは。
    大坂です。

    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)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/818-7331027a
    この記事にトラックバックする(FC2ブログユーザー)