Bagikan melalui


LastIndexOf telah meningkatkan penanganan string pencarian kosong

String.LastIndexOf dan API terkait sekarang mengembalikan nilai yang benar saat mencari substring panjang nol (atau panjang nol yang setara) dalam string yang lebih besar.

Deskripsi perubahan

Di .NET Framework dan .NET Core 1.0 - 3.1, String.LastIndexOf dan API terkait mungkin mengembalikan nilai yang salah ketika pemanggil mencari substring panjang nol.

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

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

Dimulai dengan .NET 5, API ini mengembalikan nilai yang benar untuk LastIndexOf.

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

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

Dalam contoh ini, 5 adalah jawaban yang benar karena "Hello".Substring(5) dan "Hello".AsSpan().Slice(5) keduanya menghasilkan string kosong, yang sepele sama dengan substring kosong yang dicari.

Alasan untuk berubah

Perubahan ini adalah bagian dari upaya perbaikan bug secara keseluruhan sekeliling penanganan string untuk .NET 5. Ini juga membantu menyatukan perilaku kita antara platform Windows dan non-Windows. Untuk informasi selengkapnya, lihat dotnet/runtime#13383 dan dotnet/runtime##13382.

Versi yang diperkenalkan

5.0

Anda tidak perlu melakukan tindakan apa pun. Runtime .NET 5 menyediakan perilaku baru secara otomatis.

Tidak ada sakelar kompatibilitas untuk memulihkan perilaku lama.

API yang Terpengaruh