以下のコードはどちらも文字列を出力しますが、違いはあるのでしょうか?
MyEnum.Item.ToString();
nameof(MyEnum.Item);
ふと気になったのでググってみたら、以下のページがありました。
ToString()
はランタイムによって実行時に評価されます。
対して nameof
はコンパイル時に評価され、文字列リテラルとして出力されます。
従って、速度の面では nameof
のほうに優位性があるようです。
対して、ToString()
は任意の文字列を出力できる点に優位性があるようです。
Enum
だとどちらも出力結果は同じなので、nameof
を使っておけば良いと思います。
クラスだと出力結果が同じとは限らないため、コードをそのまま文字列として出力したいという意図ならば、やはり nameof
を使用するほうが良いと思います。