[C#] enum の ToString() は確かに遅いが……
enum (列挙型) の ToString() メソッドは、確かに遅い。遅いんだが、何十万回と繰り返した時にその差がはっきりするわけで、そんなにループするような処理は現実的ではない。それでもまぁ、パフォーマンスが良い方を選択するのが良き実装者という感じか。
あとは、enum が日本語名の変数にしないと名前が取れないので、スマートではないように見えるという主観的な話だけか。
ただ最近は、インテリセンスに 「使用しないでください」 と出るのね。
FlagsAttribute を指定すると、戻ってくる値が安全ではないから推奨されないとかなんとか。
using System.Diagnostics; Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 100000; i++) { string s = SampleNames.hans.GetDisplay(); } sw.Stop(); long millisec = sw.ElapsedMilliseconds; Debug.WriteLine("拡張メソッド : " + millisec.ToString() + "ミリ秒"); sw.Start(); for (int i = 0; i < 100000; i++) { string s = SampleNames2.ジョン.ToString(); } sw.Stop(); millisec = sw.ElapsedMilliseconds; Debug.WriteLine("ToString() : " + millisec.ToString() + "ミリ秒"); // 出力結果 // 拡張メソッド : 1ミリ秒 // ToString() : 75ミリ秒数値だけ見ると、たしかに遅い (笑) 。
あとは、enum が日本語名の変数にしないと名前が取れないので、スマートではないように見えるという主観的な話だけか。
ただ最近は、インテリセンスに 「使用しないでください」 と出るのね。
FlagsAttribute を指定すると、戻ってくる値が安全ではないから推奨されないとかなんとか。