Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В качестве новой функции отражения тип указателя функции теперь является экземпляром System.Type с новыми возможностями, такими как Type.IsFunctionPointer. System.Type Ранее возвращаемый экземпляр был типомIntPtr.
Использование System.Type таким образом аналогично тому, как предоставляются другие типы, такие как указатели (Type.IsPointer) и массивы (Type.IsArray).
Эта новая функция в настоящее время реализована в среде выполнения CoreCLR и в MetadataLoadContext. Поддержка сред выполнения Mono и NativeAOT ожидается позже.
Экземпляр указателя функции, который является физическим адресом функции, продолжает представляться как экземпляр IntPtr; изменился только тип отражения.
Предыдущее поведение
Ранее typeof(delegate*<void>()) возвращал тип System.IntPtr для типа указателя функции. Аналогично, рефлексия также возвращает этот тип для типа указателя функции, как в случае с FieldInfo.FieldType. Тип IntPtr не разрешал доступ к типам параметров, возвращаемым типам или соглашениям о вызовах.
Новое поведение
typeof и отражение теперь используют System.Type для типа указателя функции, который предоставляет доступ к типам параметров, возвращаемому типу и правилам вызова.
Представленная версия
.NET 8( предварительная версия 2)
Тип разрушающего изменения
Причина изменения
Это изменение добавляет возможность получения метаданных указателя функции, включая типы параметров, возвращаемый тип и соглашения о вызовах. Поддержка указателя функций была добавлена с помощью C# 9 и .NET 5, но поддержка отражения не была добавлена в то время.
Рекомендуемое действие
Если вы хотите, чтобы код поддерживал указатели функций и специально обрабатывал их, используйте новый Type.IsFunctionPointer API.