IntPtr se už nepoužívá pro typy ukazatelů funkce.
Jako nová funkce reflexe je nyní System.Type typem ukazatele funkce instance s novými funkcemi, jako Type.IsFunctionPointerje . Dříve vrácená System.Type instance byla typem IntPtr .
Tímto způsobem se podobá System.Type tomu, jak jsou vystaveny jiné typy, jako jsou ukazatele (Type.IsPointer) a pole (Type.IsArray).
Tato nová funkce je v současné době implementována v modulu runtime CoreCLR a v MetadataLoadContext. Podpora modulů runtime Mono a NativeAOT se očekává později.
Instance ukazatele funkce, která je fyzickou adresou funkce, je nadále reprezentována jako ; IntPtrzměnila se pouze typ odrazu.
Předchozí chování
typeof(delegate*<void>())
Dříve vrátil System.IntPtr typ ukazatele funkce. Podobně reflexe vrátila tento typ také pro typ ukazatele funkce, například s FieldInfo.FieldType. Typ IntPtr nepovolil žádný přístup k typům parametrů, návratovým typům nebo konvencím volání.
Nové chování
typeof
a reflexe se teď používají System.Type pro typ ukazatele funkce, který poskytuje přístup k typům parametrů, návratovým typům a konvencím volání.
Zavedená verze
.NET 8 Preview 2
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Tato změna přidá možnost získat metadata ukazatele funkce, včetně typů parametrů, návratového typu a konvencí volání. Podpora ukazatele funkce byla přidána s C# 9 a .NET 5, ale v té době nebyla přidána podpora reflexe.
Doporučená akce
Pokud chcete, aby kód podporoval ukazatele na funkce a aby s nimi zacházet speciálně, použijte nové Type.IsFunctionPointer rozhraní API.
Ovlivněná rozhraní API
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro