LastIndexOf ha migliorato la gestione delle stringhe di ricerca vuote
String.LastIndexOf e le API correlate restituiscono ora valori corretti durante la ricerca di una sottostringa di lunghezza zero (o equivalente a lunghezza zero) all'interno di una stringa più grande.
Descrizione delle modifiche
In .NET Framework e .NET Core 1.0 - 3.1 String.LastIndexOf e le API correlate potrebbero restituire un valore non corretto quando il chiamante cerca una sottostringa di lunghezza zero.
Console.WriteLine("Hello".LastIndexOf("")); // prints '4' (incorrect)
ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '0' (incorrect)
A partire da .NET 5, queste API restituiscono il valore corretto per LastIndexOf
.
Console.WriteLine("Hello".LastIndexOf("")); // prints '5' (correct)
ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '5' (correct)
In questi esempi 5
è la risposta corretta perché "Hello".Substring(5)
e "Hello".AsSpan().Slice(5)
producono entrambi una stringa vuota, che è banalmente uguale alla sottostringa vuota ricercata.
Motivo della modifica
Questa modifica faceva parte di un'operazione complessiva di correzione di bug per la gestione delle stringhe per .NET 5. Consente inoltre di unificare il comportamento tra le piattaforme Windows e non Windows. Per altre informazioni, vedere dotnet/runtime#13383 e dotnet/runtime##13382.
Versione introdotta
5.0
Azione consigliata
Non è necessario eseguire alcuna azione. Il runtime di .NET 5 fornisce automaticamente i nuovi comportamenti.
Non esiste alcuna opzione di compatibilità per ripristinare il comportamento precedente.