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 LastIndexOf
doğ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
Önerilen eylem
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.