ReSharper 2026.1 ヘルプ

コード検査: フォーマット文字列テンプレートではなく、おそらく意図しない文字列補間

次のコードは一見したところうまく見えますが、予想されるように Hello world! ではなく Hello 0! を返します。

Console.WriteLine($"Hello {0}!", "world");

何年もの間、文字列フォーマット方法(String.Format()Console.WriteLine() など)は、ハードコードされた文字列リテラルを変数値と組み合わせるための私たちのお気に入りの方法でした。そのため、中括弧 {} の数値は、最初の引数内で非常に自然に見えます。ただし、文字列のフォーマット方法を徐々に置き換える文字列補間表記では、ターゲット文字列に式を挿入するために中括弧も使用されます。上記の例では、$ で始まる最初の引数は補間された文字列として処理され、その後でのみフォーマットメソッドに渡されます。この時点で、{0} プレースホルダーはすでに計算値、つまり 0 に置き換えられており、フォーマット方法は 2 番目の引数を無視します。

ReSharper は最初の引数から $ 接頭辞を削除して、文字列のフォーマット方法が期待通りに機能するようにすることを提案します。

Console.WriteLine("Hello {0}!", "world");
2024 年 2 月 11 日

関連ページ:

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

コード検査: リソースは特定の文化では上書きされません

カルチャ階層に編成されたカルチャがいくつかあり、デフォルトカルチャで宣言されているが他のカルチャでオーバーライドされていないリソースエントリがある場合、ReSharper はリソースの名前をハイライトして対応するクイックフィックスを提案します。): クイックフィックスを適用すると、リソース宣言がカルチャ固有のリソースファイルに挿入され、そこで正しい値を指定できます。2024 年 2 月 11 日コード検査: リソースは同じ値で上書きされますコード検査: フォーマット文字列テンプレートではなく、おそ...