コードインスペクション:フォーマット文字列テンプレートではなく、おそらく意図していない文字列補間の可能性があります。
次のコードは一見したところうまく見えますが、予想されるように Hello world! ではなく Hello 0! を返します。
Console.WriteLine($"Hello {0}!", "world");
何年もの間、文字列フォーマット方法(String.Format()、 Console.WriteLine() など)は、ハードコードされた文字列リテラルを変数値と組み合わせるための私たちのお気に入りの方法でした。 そのため、中括弧 {} の数値は、最初の引数内で非常に自然に見えます。 ただし、 文字列のフォーマット方法を徐々に置き換える文字列補間表記では、ターゲット文字列に式を挿入するために中括弧も使用されます。 上記の例では、 $ で始まる最初の引数は補間された文字列として処理され、その後でのみフォーマットメソッドに渡されます。 この時点で、 {0} プレースホルダーはすでに計算値、つまり 0 に置き換えられており、フォーマット方法は 2 番目の引数を無視します。
ReSharper は、最初の引数から $ 接頭辞を削除すると、文字列フォーマットメソッドが期待通りに動作する可能性があることを提案しています:
Console.WriteLine("Hello {0}!", "world");
2026 年 6 月 12 日