C# 文字列を列挙型に変換

  1. C# の string から enum への変換-Enum.Parse() および Enum.TryParse() メソッドの使用
  2. Enum.Parse() メソッドを使用した例外処理で stringenum に変換する C# プログラム
  3. Enum.TryParse() を使用して stringenum に変換する C# プログラム
  4. Enum.IsDefined() メソッドを使用して文字列値の存在を確認する C# プログラム
  5. 結論

C# では、Enum.Parse() メソッドと Enum.TryParse() メソッドを使用して、文字列を列挙型に変換します。ここでは両方の例を示しましたが、文字列を列挙型に変換するときは Enum.TryParse() メソッドを使用することをお勧めします。

C# の string から enum への変換-Enum.Parse() および Enum.TryParse() メソッドの使用

文字列を列挙型 enum に変換するために、Enum.Parse() メソッドを使用できます。Enum.Parse() は静的メソッドであるため、ファイルの先頭に System を慎重に含める必要があります。

列挙型、文字列値、およびインジケーター(オプション)は、このメソッドのパラメーターです。Enum.Parse()Enum.TryParse() を使用するための正しい構文は次のとおりです。

EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue);
EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue,indicator); //indicator can be true or false
//To implement Enum.TryParse()
EnumName VariableName;
Enum.TryParse(StringValue, out VariableName);

これを C# プログラムに実装します。

Enum.Parse() を使用して stringenum に変換する C# プログラム

using System;
class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         string stringvalue = "Rose";
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
          //To check if we have converted successfully
         if(Flower == Flowers.Rose)
         {
            Console.WriteLine("The Flower is Rose");
         }
      }
}

出力:

The Flower is Rose

ここには、それぞれの値を持つ複数の定数を含む Flowers という名前の列挙型があります。Enum.Parse() メソッドを呼び出して、文字列値 Rose を列挙型に変換しました。typeof(Flowers) は列挙型を返します。最後に、変換が成功したかどうかを確認しました。

変換しようとしている文字列が列挙型で利用できない場合、例外が発生することがあります。これを回避するには、try-catch ブロックを使用します。

Enum.Parse() メソッドを使用した例外処理で stringenum に変換する C# プログラム

using System;

class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         stringvalue = "Jasmine";
         try
         {
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
         }
         catch (Exception ex)
         {
         Console.WriteLine("Not Possible");
         //Set value to none
         Flower = Flowers.none;
         }
      }
}

出力:

Not Possible

Enum.TryParse() を使用して stringenum に変換する C# プログラム

using System;
enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         string stringvalue = "Rose";
         //Using Enum.TryParse() 
         Flowers Flower;
         if(Enum.TryParse(stringvalue, out Flower))
         {
            Console.WriteLine(Flower == Flowers.Rose);
         }
      }
}

出力:

True

enum の定数の値を Enum.TryParse() メソッドのパラメーターとして渡すこともできます。次のプログラムはこれを実装します:

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         Flowers Flower;
         
         if(Enum.TryParse("3", out Flower))
         {
            Console.WriteLine(Flower);
         }
      }
}

出力:

Rose

また、変換したい文字列値が列挙型で定義されているか、Enum.IsDefined() メソッドを使用していないかを確認することもできます。

Enum.IsDefined() メソッドを使用して文字列値の存在を確認する C# プログラム

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      
class Conversion{
      
      static void Main()
      {
         Console.WriteLine(Enum.IsDefined(typeof(Flowers), "Rose"));
      }
}

出力:

True

結論

Enum.Parse()Enum.TryParse() は、文字列を列挙型に変換するために使用されるメソッドです。ただし、Enum.TryParse() を使用することをお勧めします。

関連記事 - Csharp String

  • C# 整数を文字列に変換
  • C# 文字列からすべての空白を効率的に削除する
  • 関連記事 - Csharp Enum

  • C# 文字列からすべての空白を効率的に削除する
  • C# char を int に変換する
  • comments powered by Disqus