DA0001: StringBuilder を使用して連結してくださいDA0001: Use StringBuilder for concatenations

規則 IDRule Id DA0001DA0001
カテゴリCategory .NET Framework の使用.NET Framework Usage
プロファイル方法Profiling methods サンプリングSampling

インストルメンテーションInstrumentation
メッセージMessage 文字列の連結に StringBuilder を使用することを検討してください。Consider using StringBuilder for string concatenations
メッセージの種類Message type 警告Warning

原因Cause

System.String.Concat の呼び出しがプロファイル データの大きな割合を占めています。Calls to System.String.Concat are a significant proportion of the profiling data. StringBuilder クラスを使用して、複数のセグメントからの文字列を連結することを検討してください。Consider using the StringBuilder class to construct strings from multiple segments.

規則の説明Rule Description

String オブジェクトは、変更できません。A String object is immutable. このため、文字列に変更を加えると、新しい文字列オブジェクトと元のオブジェクトのガベージ コレクションが作成されます。Therefore, any modification to the string creates a new string object and the garbage collection of the original. この動作は、String.Concat を明示的に呼び出しても、+ や += などの文字列連結演算子を使用しても同じです。This behavior is the same whether you call String.Concat explicitly or use the string concatenation operators such as + or +=.. これらのメソッドが頻繁に呼び出される場合 (文字列への文字の追加が短いループ内で発生する場合など)、プログラムのパフォーマンスが低下することがあります。Program performance can decrease if the these methods are frequently called, such as when characters are added to a string in a tight loop.

StringBuilder クラスは System.String とは異なり、変更可能なオブジェクトであるため、このクラスのインスタンスを変更する StringBuilder のメソッドの大多数はその同じインスタンスへの参照を返します。The StringBuilder class is a mutable object, and, unlike System.String, most of the methods on StringBuilder that modify an instance of this class return a reference to that same instance. StringBuilder インスタンスには、文字を挿入したり、テキストを付加することができ、新しいインスタンスを割り当てたり、元のインスタンスを削除しなくても、インスタンスの文字を削除または置換することができます。You can insert characters or append text to a StringBuilder instance, and remove or replace characters in the instance without the need for allocating a new instance and deleting the original instance.

警告の調査方法How to Investigate a Warning

[エラー一覧] ウィンドウに表示されたメッセージをダブルクリックして、サンプリング プロファイル データの関数の詳細ビューに移動します。Double-click the message in the Error List window to navigate to the Function Details View of the sampling profile data. 文字列連結を最も頻繁に使用するプログラムをセクションを特定します。Find the sections of the program that make the most frequent use of string concatenation. 頻繁な文字列連結など、複雑な文字列操作には StringBuilder クラスを使用します。Use the StringBuilder class for complex string manipulations, including frequent string concatenation operations.

文字列の使用方法の詳細については、Microsoft Patterns and Practices (マイクロソフトのパターンと手法) ライブラリの第 5 章「マネージ コード パフォーマンスの向上」の「文字列処理」を参照してください。For more information about how to work with strings, the String Operations section of Chapter 5 - Improving Managed Code Performance in the Microsoft Patterns and Practices library.