CA1845:請使用範圍型的 'string.Concat'
屬性 | 值 |
---|---|
規則識別碼 | CA1845 |
職稱 | 使用以範圍為基礎的 『string。Concat' |
類別 | 效能 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 9 中啟用 | 建議 |
原因
此規則會找出包含Substring呼叫的字串串連表示式,並建議使用的span型多載String.Concat取代 Substring AsSpan 。
檔案描述
呼叫 Substring
會產生擷取子字串的複本。 藉由使用 AsSpan
, Substring
而不是呼叫 接受範圍的 多載 string.Concat
,您可以排除不必要的字串配置。
如何修正違規
若要修正違規:
- 將字串串連取代為 對
string.Concat
、 和的呼叫 - 將的呼叫
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
。