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.
Als nieuwe weerspiegelingsfunctie is een functiepointertype nu een System.Type exemplaar met nieuwe mogelijkheden, zoals Type.IsFunctionPointer. Eerder was de geretourneerde System.Type instantie van het IntPtr type.
Het gebruik System.Type op deze manier is vergelijkbaar met de manier waarop andere typen worden weergegeven, zoals aanwijzers (Type.IsPointer) en matrices (Type.IsArray).
Deze nieuwe functionaliteit wordt momenteel geïmplementeerd in de CoreCLR-runtime en in MetadataLoadContext. Ondersteuning voor de Mono- en NativeAOT-runtimes wordt later verwacht.
Een functieaanwijzerinstantie, die een fysiek adres naar een functie is, wordt nog steeds weergegeven als een IntPtr; alleen het reflectietype is gewijzigd.
Vorig gedrag
Voorheen retourneerde typeof(delegate*<void>()) het System.IntPtr type voor een functieaanwijzertype. Op dezelfde manier retourneerde reflectie ook dit type voor een functiepointertype, zoals bij FieldInfo.FieldType. Het IntPtr type heeft geen toegang tot de parametertypen, retourtype of aanroepende conventies toegestaan.
Nieuw gedrag
typeof en reflectie gebruiken nu System.Type voor een functiepointer type, dat toegang biedt tot de parametertypen, returntype en aanroepconventies.
Geïntroduceerde versie
.NET 8 Preview 2
Type van brekende verandering
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Met deze wijziging wordt de mogelijkheid toegevoegd om metagegevens van functie-aanwijzers te verkrijgen, waaronder parametertypen, het retourtype en de aanroepende conventies. Ondersteuning voor functiepointer is toegevoegd met C# 9 en .NET 5, maar weerspiegelingsondersteuning is op dat moment niet toegevoegd.
Aanbevolen actie
Als u wilt dat uw code functiepointers ondersteunt en deze speciaal behandelt, gebruikt u de nieuwe Type.IsFunctionPointer API.