Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1845 |
| Заголовок | Используйте строку на основе диапазона. Сцепить |
| Категория | Производительность |
| Исправление является критическим или не критическим | Не критическое |
| Включен по умолчанию в .NET 10 | Как предложение |
Причина
Это правило находит выражения объединения строк, содержащие вызовы Substring, и предлагает заменить Substring на AsSpan, а также использовать перегрузку на базе диапазона для String.Concat.
Описание правила
Вызов 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.