CodeQL 文档

循环中的字符串连接

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

点击查看 CodeQL 存储库中的查询

此规则查找在循环中使用 + 运算符执行字符串连接的代码。如果所讨论的封闭循环执行多次,则使用 + 运算符可能会效率低下。

建议

为了提高效率,最好使用 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);
    }
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私