文字列の自動変換にC#の列挙型?
-
26-09-2019 - |
質問
は、自動的にコンパイラを持って、私は明示的にToStringメソッドを毎回呼び出しを避けることができるように文字列に私の列挙型の値を変換することが可能です。ここで私がやりたいものの例です。
enum Rank { A, B, C }
Rank myRank = Rank.A;
string myString = Rank.A; // Error: Cannot implicitly convert type 'Rank' to 'string'
string myString2 = Rank.A.ToString(); // OK: but is extra work
解決
はありません。列挙型は、あなたが何か他のものに変換したい場合、あなたはいくつかの作業を行う必要があり、それ自身のタイプです。
しかし、あなたはそれをやっていることに応じて、いくつかのタスクは、あなたのために自動的にそれに対してtoString()を呼び出します。たとえば、あなたが行うことができます:
Console.Writeline(Rank.A);
他のヒント
あなたはおそらく列挙型自体を探していますが、文字列定数のリストされていません。これは、いくつかのシナリオでは、より良いあなたのニーズに合うことができます。
の代わりにこれを使用します:
public static class Rank
{
public const string A = "A";
public const string B = "B";
public const string C = "C";
}
はありませんが、少なくとも、あなたは例えば、その文字列値を使用する必要がある可能性がある場合、そのToString()
メソッドを呼び出します列挙型で物事を行うことができます。
Console.WriteLine(Rank.A); //prints "A".
正しい構文をする必要があります。
myRank.ToString("F");
これは厄介であるかどうかの
[注意、ハック]わからない、私にはそれが合理的な妥協点と思われます。
var myEnumAsString = MyEnum+"";
Console.WriteLine(myEnumAsString); //MyEnum
これは暗黙のToStringを強制的に()
所属していません StackOverflow