私はC#列挙型について疑問を抱いていました。C#列挙型と重複値 - 危険?
Name is: SecondElement
Name is: ThirdElement
Name is: FirstElement
Name is: Duplicate
first string is: FirstElement
value is: -1
second string is: SecondElement
value is: 0
duplicate string is: FirstElement
value is: -1
fromstr string is: FirstElement
value is: -1
Duplicate compares the same as FirstElement
Press any key to continue . . .
これは私がしたい正確に何も、私は何かを構築していますので、そのバージョンを期待しているようだ:次の出力を生成し
namespace ConsoleTest
{
enum TestEnum
{
FirstElement = -1,
SecondElement,
ThirdElement,
Duplicate = FirstElement
}
/// <summary>
/// Summary description for MainConsole.
/// </summary>
public class MainConsole
{
/// <summary>
/// Constructor for the class.
/// </summary>
public MainConsole()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// Entry point for the application.
/// </summary>
/// <param name="args">Arguments to the application</param>
public static void Main(string[] args)
{
TestEnum first = TestEnum.FirstElement;
TestEnum second = TestEnum.SecondElement;
TestEnum duplicate = TestEnum.Duplicate;
foreach (string str in Enum.GetNames(typeof(TestEnum)))
{
Console.WriteLine("Name is: " + str);
}
Console.WriteLine("first string is: " + first.ToString());
Console.WriteLine("value is: " + ((int)first).ToString());
Console.WriteLine("second string is: " + second.ToString());
Console.WriteLine("value is: " + ((int)second).ToString());
Console.WriteLine("duplicate string is: " + duplicate.ToString());
Console.WriteLine("value is: " + ((int)duplicate).ToString());
TestEnum fromStr = (TestEnum)Enum.Parse(typeof(TestEnum), "duplicate", true);
Console.WriteLine("fromstr string is: " + fromStr.ToString());
Console.WriteLine("value is: " + ((int)fromStr).ToString());
if (fromStr == TestEnum.Duplicate)
{
Console.WriteLine("Duplicate compares the same as FirstElement");
}
else
{
Console.WriteLine("Duplicate does NOT compare the same as FirstElement");
}
}
}
}
:私は物事をテストするには、以下の小さなプログラムを作成しましたタグが頻繁に増加するので、私は現在のバージョンに "割り当てる"ことができ、それを比較することもできます。
ここに質問があります:このアプローチの落とし穴は何ですか? 1つはありますか?それはちょうど悪いスタイルですか(私はthedailywtfに終わることを望んでいません)?このようなことをするより良い方法がありますか?私は.NET 2.0を使用しており、3.5または4.0に移行するオプションはありません。
意見は歓迎します。
enumが文字列に変換されているのが見えますが、文字列がemumに解析されています。あなたは何をしていますか、あなたは正しくやっていますが、あなたの目標は何ですか? –
@Rob Elliott - これらのものの中には、文字列ベースのデータストア(私の選択ではない)に出入りするものがあるので、私が期待しているものを返すようにする必要があります。 –