JetBrains Rider 2026.1 Help

コードインスペクション:フォーマット文字列の書式指定子の後に右波括弧を使用しないでください。

このインスペクションは、複合文字列または補間文字列内の書式指定子が意図せず閉じ括弧(} )を捕捉するケースを指摘します。 これにより、実行時エラーや不正なフォーマット動作が発生する可能性があります。

例: 次のコードの場合:

string result = string.Format("{0:x}}}", 42);

ここで、2 番目の閉じ括弧(}} )は、フォーマットロジックによって、ネストされた書式項目の一部であると誤って解釈されます。 これにより、実行時エラーが発生したり、意図しないフォーマット結果になったりします。

.NET フレームワークでは、 Console.WriteLine($"Value: {42:x}}}"); などの文字列補間は内部的に string.Format の呼び出しに変換されます。 そのため、文字列補間を使用する場合にもこの問題が発生します。

複合フォーマットの詳細については、 公式の Microsoft ドキュメントを参照してください。

.NET 5 以降、この問題はコンパイラーによって処理されます。 書式指定子は曖昧さを軽減する方法で処理されるようになり、閉じ括弧を追加してもエラーが発生しなくなりました。 これにより、ほとんどの場合、手動で調整する必要がなくなりました。

.NET フレームワークまたは .NET バージョン 5.0 より前を対象とする古いプロジェクトの場合、式を手動で ToString と文字列連結の組み合わせに変更するのが、明瞭性と互換性を確保しながらこの問題を解決する最も簡単な方法です。

この場合、修正されたバージョンは次のようになります。

string result = 42.ToString("x") + "}";
2026 年 6 月 12 日