CA1845: Span tabanlı 'string' kullanın. Concat'
Özellik | Değer |
---|---|
Kural Kimliği | CA1845 |
Başlık | Span tabanlı 'string' kullanın. Concat' |
Kategori | Performans |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 8'de varsayılan olarak etkin | Öneri olarak |
Neden
Bu kural, çağrılar içeren Substring dize birleştirme ifadelerini bulur ve ile AsSpan değiştirilip Substring span tabanlı aşırı yüklemesini String.Concatkullanmayı önerir.
Kural açıklaması
Çağrılması Substring
, ayıklanan alt dizenin bir kopyasını oluşturur. yerine kullanarak AsSpan
Substring
ve spans kabul eden aşırı yüklemesini string.Concat
çağırarak, gereksiz dize ayırmayı ortadan kaldırabilirsiniz.
İhlalleri düzeltme
İhlalleri düzeltmek için:
- Dize birleştirmesini öğesine yapılan bir çağrıyla
string.Concat
değiştirin ve - için çağrılarını
Substring
çağrısıylaAsSpan
değiştirin.
Aşağıdaki kod parçacığında ihlal örnekleri ve bunların nasıl düzeltileceğini gösterilmektedir.
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));
}
}
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan gelen uyarıları gizlemeyin. Ayıklanan alt dize yalnızca span tabanlı eşdeğeri olan bir yönteme geçirilirken kullanmak AsSpan
için bir neden Substring
yoktur.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin