Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
String.LastIndexOf e le API correlate restituiscono ora valori corretti durante la ricerca di una sottostringa di lunghezza zero (o equivalente a 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 errato 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)
entrambi producono una stringa vuota, che è facilmente 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.