共用方式為


CA1845:請使用範圍型的 'string.Concat'

屬性
規則識別碼 CA1845
職稱 使用以範圍為基礎的 『string。Concat'
類別 效能
修正程式是中斷或非中斷 不中斷
預設在 .NET 9 中啟用 建議

原因

此規則會找出包含Substring呼叫的字串串連表示式,並建議使用的span型多載String.Concat取代 Substring AsSpan

檔案描述

呼叫 Substring 會產生擷取子字串的複本。 藉由使用 AsSpanSubstring 而不是呼叫 接受範圍的 多載 string.Concat ,您可以排除不必要的字串配置。

如何修正違規

若要修正違規:

  1. 將字串串連取代為 對 string.Concat、 和的呼叫
  2. 將的呼叫 Substring 取代為 對的 AsSpan呼叫。

下列代碼段顯示違規範例,以及如何修正這些違規。

using System;

class Example
{
    public void Method()
    {
        string text = "fwobz the fwutzle";

        //  Violation: allocations by Substring are wasteful.
        string s1 = text.Substring(10) + "---" + text.Substring(0, 5);

        //  Fixed: using AsSpan avoids allocations of temporary strings.
        string s2 = string.Concat(text.AsSpan(10), "---", text.AsSpan(0, 5));
    }
}

隱藏警告的時機

請勿隱藏來自此規則的警告。 當擷取的子字串只傳遞至具有範圍型對等專案的方法時,沒有理由使用 Substring AsSpan

另請參閱