Sdílet prostřednictvím


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.

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