Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1845 |
| Başlık | Span tabanlı 'string.Concat' kullanın. |
| Kategori | Performans |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
Bu kural, Substring çağrıları içeren dize birleştirme ifadelerini bulur ve Substring'in AsSpan ile değiştirilmesini ve span tabanlı aşırı yüklemesi olan String.Concat'yi kullanmayı önerir.
Kural açıklaması
Çağrılması Substring , ayıklanan alt dizenin bir kopyasını oluşturur.
AsSpan yerine Substring kullanarak ve aralıkları kabul eden string.Concat aşırı yüklemesini çağırarak, gereksiz dize ayrımını ortadan kaldırabilirsiniz.
İhlalleri düzeltme
İhlalleri düzeltmek için:
- Dize birleştirmesini bir çağrı kullanarak
string.Concatile değiştirin ve - Çağrıları
SubstringileAsSpançağrılarına 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 yayılım tabanlı eşdeğeri olan bir yönteme geçirildiğinde Substring kullanmak için bir neden yoktur.