Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nyní je typ ukazatele funkce jako instance s novými schopnostmi, jako je System.Type, součástí nové reflexní funkce Type.IsFunctionPointer. 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 pro prostředí běhu 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 teď používá System.Type pro typ ukazatele funkce, který zajišťuje přístup k typům parametrů, návratovému typu a konvencím volání.
Verze byla představena
.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 funkčních ukazatelů 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.