循环中的字符串连接¶
ID: cs/string-concatenation-in-loop
Kind: problem
Security severity:
Severity: recommendation
Precision: very-high
Tags:
- efficiency
- maintainability
Query suites:
- csharp-security-and-quality.qls
此规则查找在循环中使用 +
运算符执行字符串连接的代码。如果所讨论的封闭循环执行多次,则使用 +
运算符可能会效率低下。
建议¶
为了提高效率,最好使用 System.Text.StringBuilder
。
示例¶
class StringConcatenationInLoop
{
public static void Main(string[] args)
{
String numberList = "";
for (int i = 0; i <= 100; i++)
{
numberList += i + " ";
}
Console.WriteLine(numberList);
}
}
使用 StringBuilder 进行修复¶
此代码执行与示例相同的功能,但它使用 StringBuilder
,因此效率更高。
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);
}
}
参考¶
MSDN: StringBuilder。