LastIndexOf, boş arama dizelerinin işlenmesini geliştirdi

String.LastIndexOf ve ilgili API'ler artık daha büyük bir dize içinde sıfır uzunluklu (veya sıfır uzunluk eşdeğeri) alt dize ararken doğru değerler döndürmektedir.

Açıklama değiştirildi

.NET Framework ve .NET Core 1.0 - 3.1'de String.LastIndexOf ve çağıran sıfır uzunluklu alt dizeyi aradığında ilgili API'ler yanlış bir değer döndürebilir.

Console.WriteLine("Hello".LastIndexOf("")); // prints '4' (incorrect)

ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '0' (incorrect)

.NET 5'den başlayarak, bu API'ler için LastIndexOfdoğru değeri döndürür.

Console.WriteLine("Hello".LastIndexOf("")); // prints '5' (correct)

ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '5' (correct)

Bu örneklerde, 5 doğru yanıttır çünkü "Hello".Substring(5) ve "Hello".AsSpan().Slice(5) her ikisi de aranan boş alt dizeye önemsiz olarak eşit olan boş bir dize üretir.

Değişiklik nedeni

Bu değişiklik, .NET 5 için dize işlemeyle ilgili genel bir hata düzeltme çalışmasının bir parçasıydı. Ayrıca Windows ve Windows dışı platformlar arasındaki davranışımızı birleştirmeye yardımcı olur. Daha fazla bilgi için bkz . dotnet/runtime#13383 ve dotnet/runtime##13382.

Sürüm kullanıma sunulmuştur

5.0

Herhangi bir işlem yapmanız gerekmez. .NET 5 çalışma zamanı, yeni davranışları otomatik olarak sağlar.

Eski davranışı geri yüklemek için uyumluluk anahtarı yoktur.

Etkilenen API’ler