Funkcja LastIndexOf poprawiła obsługę pustych ciągów wyszukiwania
String.LastIndexOf powiązane interfejsy API zwracają teraz prawidłowe wartości podczas wyszukiwania podciągu o zerowej długości (lub równoważnej zerowej długości) w większym ciągu.
Opis zmiany
W programach .NET Framework i .NET Core 1.0 — 3.1 i powiązanych interfejsach API mogą zwracać nieprawidłową wartość, String.LastIndexOf gdy obiekt wywołujący wyszukuje podciąg o zerowej długości.
Console.WriteLine("Hello".LastIndexOf("")); // prints '4' (incorrect)
ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '0' (incorrect)
Począwszy od platformy .NET 5, te interfejsy API zwracają poprawną wartość elementu LastIndexOf
.
Console.WriteLine("Hello".LastIndexOf("")); // prints '5' (correct)
ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '5' (correct)
W tych przykładach jest poprawna odpowiedź, 5
ponieważ "Hello".Substring(5)
obaj "Hello".AsSpan().Slice(5)
tworzą pusty ciąg, który jest trywialnie równy pustemu podciągowi, którego szukano.
Przyczyna wprowadzenia zmiany
Ta zmiana była częścią ogólnego wysiłku w zakresie naprawiania błędów związanych z obsługą ciągów dla platformy .NET 5. Pomaga również ujednolicić nasze zachowanie między platformami Windows i innych niż Windows. Aby uzyskać więcej informacji, zobacz dotnet/runtime#13383 i dotnet/runtime#13382.
Wprowadzona wersja
5,0
Zalecana akcja
Nie musisz podejmować żadnych działań. Środowisko uruchomieniowe platformy .NET 5 automatycznie udostępnia nowe zachowania.
Brak przełącznika zgodności w celu przywrócenia starego zachowania.