RuntimeHelpers.GetSubArray restituisce un tipo diverso
Il tipo di istanza di matrice restituita da RuntimeHelpers.GetSubArray<T>(T[], Range) è stato modificato in modo che corrisponda alla matrice di origine. RuntimeHelpers.GetSubArray
viene usato dal compilatore C# per implementare l'operatore di intervallo per le matrici.
Questa modifica del comportamento può essere osservata solo dal codice che usa conversioni di matrici covarianti.
Comportamento precedente
In precedenza, RuntimeHelpers.GetSubArray<T>(T[] array, Range range)
restituiva un'istanza di matrice di tipo T[]
.
Ad esempio, il tipo di istanza della matrice restituita da RuntimeHelpers.GetSubArray<object>(new string[1], ...)
era object[]
.
Nuovo comportamento
A partire da .NET 9, RuntimeHelpers.GetSubArray<T>(T[] array, Range range)
restituisce un'istanza di matrice dello stesso tipo del parametro array
.
Ad esempio, il tipo di istanza della matrice restituita da RuntimeHelpers.GetSubArray<object>(new string[1], ...)
è string[]
.
Versione di introduzione
.NET 9 Anteprima 1
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
La progettazione delle funzionalità dei criteri di ricerca C# presuppone che il tipo di istanza della matrice restituita da RuntimeHelpers.GetSubArray<T>(T[], Range) corrisponda alla matrice di origine. Il comportamento precedente ha portato a un comportamento imprevisto di determinate espressioni per i criteri complesse che usavano il sezionamento di matrici covarianti. Per altre informazioni, vedere dotnet/roslyn issue 69053.
Azione consigliata
L'azione consigliata consiste nel rimuovere la dipendenza del codice interessato dalla covarianza delle matrici.
Ad esempio, modificare:
object[] arr = new string[1];
M(arr[1..2]);
in:
string[] arr = new string[1];
M(arr[1..2]);
API interessate
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per