CA1845:請使用範圍型的 'string.Concat'
屬性 | 值 |
---|---|
規則識別碼 | CA1845 |
標題 | 使用以範圍為基礎的 'string。Concat' |
類別 | 效能 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 8 中啟用 | 建議 |
原因
此規則會找出包含 Substring 呼叫的字串串連運算式,並建議使用 的 span 型多載 String.Concat 取代 SubstringAsSpan 。
檔案描述
呼叫 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
。