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

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()
を使用して string
を enum
に変換する 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()
メソッドを使用した例外処理で string
を enum
に変換する 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()
を使用して string
を enum
に変換する 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()
を使用することをお勧めします。