プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2019/04/25

[C#] nameof と ToString の違い

event_note2019/04/25 4:54

以下のコードはどちらも文字列を出力しますが、違いはあるのでしょうか?

MyEnum.Item.ToString();
nameof(MyEnum.Item);

ふと気になったのでググってみたら、以下のページがありました。

ToString() はランタイムによって実行時に評価されます。
対して nameof はコンパイル時に評価され、文字列リテラルとして出力されます。

従って、速度の面では nameof のほうに優位性があるようです。
対して、ToString() は任意の文字列を出力できる点に優位性があるようです。

Enum だとどちらも出力結果は同じなので、nameof を使っておけば良いと思います。

クラスだと出力結果が同じとは限らないため、コードをそのまま文字列として出力したいという意図ならば、やはり nameof を使用するほうが良いと思います。