Uyarı CA1831: Dize için Aralık tabanlı dizin oluşturucular yerine AsSpan kullanın
.NET kod çözümleyici kuralı CA1831 varsayılan olarak .NET 5'te başlayarak etkindir. Bir dizede tabanlı dizin oluşturucu kullanılan ancak hiçbir kopyanın tasarlanmamış olduğu Rangetüm kodlar için bir derleme uyarısı üretir.
Açıklama değiştirildi
.NET 5'den başlayarak .NET SDK'sı .NET kaynak kodu çözümleyicilerini içerir. Ca1831 de dahil olmak üzere bu kuralların bazıları varsayılan olarak etkindir. Projeniz bu kuralı ihlal eden bir kod içeriyorsa ve uyarıları hata olarak değerlendirecek şekilde yapılandırılmışsa, bu değişiklik derlemenizi bozabilir.
Kural CA1831, bir dizede tabanlı dizin Rangeoluşturucu kullanılan ancak hiçbir kopyanın amaçlanmamış olduğu örnekleri bulur. RangeTabanlı dizin oluşturucu örtük bir atama oluşturmak için doğrudan bir dize üzerinde kullanılıyorsa, dizenin istenen bölümünün gereksiz bir kopyası oluşturulur. Örneğin:
ReadOnlySpan<char> slice = str[1..3];
CA1831 bunun yerine dizenin Rangebir yayılma alanı üzerinde tabanlı dizin oluşturucunun kullanılmasını önerir. Örneğin:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];
Sürüm kullanıma sunulmuştur
5.0
Önerilen eylem
Kodunuzu düzeltmek ve gereksiz ayırmalardan kaçınmak için , -based indexer'ı kullanmadan önce veya çağrısında AsSpan(String)AsMemory(String) bulundunuz Range. Örneğin:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];
Kodunuzu değiştirmek istemiyorsanız, kuralın önem derecesini
suggestion
veyanone
olarak ayarlayarak kuralı devre dışı bırakabilirsiniz. Daha fazla bilgi için bkz . Kod çözümleme kurallarını yapılandırma.Kod analizini tamamen devre dışı bırakmak için proje dosyanızda olarak
false
ayarlayınEnableNETAnalyzers
. Daha fazla bilgi için bkz . EnableNETAnalyzers.
Etkilenen API’ler
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