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
Tindakan yang direkomendasikan
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk