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' kullanın. Concat' |
| Kategori | Performans |
| Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
Neden
Bu kural, çağrılar içeren Substring dize birleştirme ifadelerini bulur ve ile Substring değiştirilip AsSpan 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 AsSpanSubstring 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.Concatdeğiştirin ve - için çağrılarını
SubstringçağrısıylaAsSpandeğ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 Substring için bir neden AsSpan yoktur.