コードインスペクション: 純粋なメソッドの戻り値が使用されていません
次のコードスニペットを考えてみましょう。
name.Replace(", ", " ");
コードが何かをしているように見えるかもしれませんが、実際にはそうではありません ! 理由は、文字列は不変であるため、 string.Replace は元の文字列の何も置き換えないためです(たとえば、 StringBuilder とは異なります)。 純粋な関数呼び出しの結果が何にも割り当てられなかったため、したことは数 CPU サイクルの無駄です。
ReSharper が string.Replace を純粋だとどのように判断しているのか疑問に思われるかもしれません。 この仕組みは .NET Framework クラスライブラリやその他のよく使われるライブラリ向けの 外部アノテーション で実現されています。 これらのアノテーションは ReSharper のインストールに含まれています。 このインスペクションをトリガーする [Pure] 属性は カスタムの純粋なメソッド にも使用でき、また 外部アノテーション の仕組みを利用して利用中のコンパイル済みライブラリ内の純粋なメソッドに注釈を付けることもできます。
2026 年 6 月 12 日