Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.NET 6 bekijkt een nieuwe functie waarin static interfaceleden kunnen worden gemarkeerd als abstract. Deze functie omvat verschillende wijzigingen in de ECMA 335-specificatie om tussenliggende taalmetagegevenspatronen (IL) toe te staan die eerder als illegaal werden beschouwd. Zie dotnet/runtime#49558 voor meer informatie.
Oud gedrag
Als een statische interface is gemarkeerd als abstract:
- De C#-compiler heeft fout CS0112 gegenereerd.
- Hulpprogramma's en andere compilers hebben illegale IL-metagegevens gegenereerd.
Nieuw gedrag
Vanaf .NET 6 kunnen statische interfaceleden worden gemarkeerd als abstract en succesvol worden gecompileerd. Daarnaast worden de IL-metagegevenspatronen die worden gegenereerd, nu beschouwd als juridisch vanwege wijzigingen in de ECMA 335-specificatie.
De implementatie van static abstract interfaceleden wordt geleverd door typen die de interface implementeren.
Opmerking
Voor .NET 6 moet u preview-functies in uw project inschakelen om een interfacelid te kunnen markeren als static abstract.
Omdat dit een nieuw juridisch IL-patroon is, kunnen bestaande hulpprogramma's de bijbehorende metagegevens onjuist verwerken en onverwacht gedrag hebben. Het is waarschijnlijk dat hulpprogramma's het nieuwe metagegevenspatroon tegenkomen, omdat interfaces met static abstract leden nu worden weergegeven op de primitieve typen, bijvoorbeeld System.Int32.
Geïntroduceerde versie
.NET 6
Type van brekende verandering
Deze wijziging kan van invloed zijn op binaire compatibiliteit.
Reden voor wijziging
Deze wijziging is geïntroduceerd omdat er geen manier is om statische leden te abstraheren en gegeneraliseerde code te schrijven die van toepassing is op verschillende typen die deze statische leden definiëren. Dit was in het bijzonder problematisch voor lidtypen die alleen in statische vorm bestaan, bijvoorbeeld operatoren.
Aanbevolen actie
Werk alle hulpprogramma's bij die binaire .NET-bestanden of C#-broncode verbruiken om rekening te houden met het nieuwe concept van static abstract interfaceleden, inclusief de hulpprogramma's die nu bestaan op de primitieve typen .NET.
Betreffende API's
Niet van toepassing.