Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA1845 |
| Tytuł | Użyj 'string.Concat' opartego na span. |
| Kategoria | Wydajność |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Jako sugestia |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Ta reguła lokalizuje wyrażenia łączenia ciągów, które zawierają wywołania Substring i sugeruje zastąpienie Substring za pomocą AsSpan oraz użycie przeciążenia metodą span w String.Concat.
Opis reguły
Wywołanie Substring kopiuje wyodrębniony podciąg. 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 konkatenację ciągów wywołaniem metody
string.Concati - Zastąp wywołania funkcji
Substringwywoł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żywać Substring zamiast AsSpan, gdy wyodrębniony podciąg jest przekazywany tylko do metody posiadającej odpowiednik oparty na zakresie.