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()
を使用することをお勧めします。