String concatenation in loop — CodeQL query help documentation
CodeQL docs
String concatenation in loop
ID: cs/string-concatenation-in-loop
Kind: problem
Security severity:
Severity: recommendation
Precision: very-high
Tags:
- quality
- reliability
- performance
Query suites:
- csharp-code-quality.qls
- csharp-security-and-quality.qls
Click to see the query in the CodeQL repository
This rule finds code that performs string concatenation in a loop using the + operator. If the enclosing loop in question is executed many times, the use of the + operator may be inefficient.
Recommendation
It is better to use System.Text.StringBuilder for efficiency.
Example
class StringConcatenationInLoop
{
public static void Main(string[] args)
{
String numberList = "";
for (int i = 0; i <= 100; i++)
{
numberList += i + " ";
}
Console.WriteLine(numberList);
}
}
Fix With StringBuilder
This code performs the same function as the example except it uses StringBuilder so it is more efficient.
class StringConcatenationInLoopFix
{
public static void Main(string[] args)
{
StringBuilder numberList = new StringBuilder();
for (int i = 0; i <= 100; i++)
{
numberList.Append(i);
numberList.Append(" ");
}
Console.WriteLine(numberList);
}
}
References