Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA1845 |
| Název | Použijte řetězec založený na rozsahu. Concat' |
| Kategorie | Výkon |
| Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
Příčina
Toto pravidlo vyhledá výrazy zřetězení řetězců, které obsahují Substring volání, a navrhne nahrazení SubstringAsSpan a použití přetížení založeného na rozsahu String.Concat.
Popis pravidla
Volání Substring vytvoří kopii extrahovaného podřetětěce. Když použijete AsSpan místo Substring přetížení, které přijímá rozsahy a voláte ho string.Concat , můžete eliminovat zbytečné přidělení řetězců.
Jak opravit porušení
Oprava porušení:
- Nahrazení zřetězení řetězce voláním
string.Concata - Nahraďte volání voláním
SubstringnaAsSpanadresu .
Následující fragment kódu ukazuje příklady porušení a postup jejich opravy.
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));
}
}
Kdy potlačit upozornění
Nepotlačujte upozornění z tohoto pravidla. Neexistuje důvod k použití SubstringAsSpan , pokud extrahovaný podřetětěr předává pouze metodě s ekvivalentem založeným na rozsahu.