CA1845: Użyj ciągu opartego na span. Concat'
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1845 |
Tytuł | Użyj ciągu opartego na span. Concat' |
Kategoria | Wydajność |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako sugestia |
Przyczyna
Ta reguła lokalizuje wyrażenia łączenia ciągów, które zawierają Substring wywołania i sugerują zamianę Substring AsSpan na i przy użyciu przeciążenia opartego String.Concatna zakresie .
Opis reguły
Wywołanie Substring
tworzy kopię wyodrębnionego podciągu. Używając funkcji AsSpan
zamiast Substring
i wywołując przeciążenie string.Concat
, które akceptuje zakresy, można wyeliminować niepotrzebną alokację ciągów.
Jak naprawić naruszenia
Aby naprawić naruszenia:
- Zastąp łączenie ciągów wywołaniem metody
string.Concat
, i - Zastąp wywołania funkcji
Substring
wywołaniami funkcjiAsSpan
.
Poniższy fragment kodu przedstawia przykłady naruszeń i sposób ich naprawiania.
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));
}
}
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń z tej reguły. Nie ma powodu, aby użyć Substring
AsSpan
metody , gdy wyodrębniony podciąg jest przekazywany tylko do metody z równoważnikiem opartym na zakresie.