Condividi tramite


Membri astratti statici dichiarati nelle interfacce

.NET 6 include in anteprima una nuova funzionalità grazie alla quale i membri dell'interfaccia static possono essere contrassegnati come abstract. Questa funzionalità comporta diverse modifiche alla specifica ECMA 335 per consentire modelli di metadati del linguaggio intermedio (IL) considerati in precedenza non validi. Per altre informazioni, vedere dotnet/runtime#49558.

Comportamento precedente

Se un'interfaccia statica veniva contrassegnata come abstract:

  • Il compilatore C# generava l'errore CS0112.
  • Gli strumenti e altri compilatori generavano metadati IL non validi.

Nuovo comportamento

A partire da .NET 6, i membri dell'interfaccia statici possono essere contrassegnati come abstract e verranno compilati correttamente. Inoltre, i modelli di metadati IL generati sono ora considerati validi a causa delle modifiche apportate alla specifica ECMA 335.

L'implementazione dei membri di interfaccia static abstract è fornita dai tipi che implementano l'interfaccia.

Nota

Per .NET 6, è necessario abilitare le funzionalità di anteprima nel progetto per poter contrassegnare un membro di interfaccia come static abstract.

Poiché si tratta di un nuovo modello IL valido, gli strumenti esistenti potrebbero elaborare erroneamente i metadati associati e avere un comportamento imprevisto. È probabile che gli strumenti incontrino il nuovo modello di metadati, perché le interfacce con membri static abstract vengono ora visualizzate per i tipi primitivi, ad esempio System.Int32.

Versione introdotta

.NET 6

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità binaria.

Motivo della modifica

Questa modifica è stata introdotta perché non era possibile eseguire astrazioni sui membri statici e scrivere codice generalizzato applicabile a tutti i tipi che definiscono tali membri statici. Ciò era particolarmente problematico per i tipi di membri che esistono solo in forma statica, ad esempio gli operatori.

Aggiornare gli strumenti che utilizzano i file binari .NET o il codice sorgente C# per tenere conto del nuovo concetto di membri dell'interfaccia static abstract, inclusi quelli esistenti per i tipi primitivi .NET.

API interessate

N/D

Vedi anche