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.
.NET kod çözümleyici kuralı CA1831 varsayılan olarak .NET 5'te başlayarak etkindir. Bir Range tabanlı dizinleyici metin üzerinde kullanılmış ancak kopyalama amaçlanmamışsa, tüm kodlar için bir derleme süreci uyarısı oluşturur.
Açıklamayı değiştir
.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, string üzerinde Range tabanlı dizinleyici kullanıldığında, kopyalama amacı taşımayan örnekleri bulur. Range tabanlı dizin oluşturucu, doğrudan bir dizenin üzerinde kullanılarak örtük bir dönüşüm yapıldığında, dizenin istenen kısmının gereksiz bir kopyası oluşturulur. Örneğin:
ReadOnlySpan<char> slice = str[1..3];
CA1831 bunun yerine dizenin bir Range içinden 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, AsSpan(String) veya AsMemory(String) çağrısını yapmadan önce Range tabanlı indeksleyici kullanın. Örneğin:
ReadOnlySpan<char> slice = str.AsSpan()[1..3];Kodunuzu değiştirmek istemiyorsanız, kuralın önem derecesini
suggestionveyanoneolarak 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
EnableNETAnalyzersöğesinifalseolarak ayarlayın. Daha fazla bilgi için bkz . EnableNETAnalyzers.