Исправление является критическим или не критическим
Не критическое
Включен по умолчанию в .NET 9
Как предложение
Причина
Метод использует маршаллирование среды выполнения, а маршаллирование среды выполнения явно отключено.
Описание правила
Если метод использует маршаллирование среды выполнения при отключении маршалинг среды выполнения, он может вызвать непредвиденные различия в поведении во время выполнения из-за различных ожиданий собственного макета типа.
Устранение нарушений
Включите маршаллирование среды выполнения или используйте такие функции, как sizeof и указатели, чтобы обеспечить точные результаты.
Когда лучше отключить предупреждения
Не подавляйте предупреждение из этого правила.
Пример
В следующем фрагменте кода показано нарушение CA1421:
C#
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: DisableRuntimeMarshalling]
classC
{
publicvoidTest()
{
nint offset = Marshal.OffsetOf(typeof(ValueType), "field");
}
}
struct ValueType
{
int field;
}
Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
<Assembly: DisableRuntimeMarshalling>
Class C
Shared Sub S1()
Dim offset As IntPtr = Marshal.OffsetOf(GetType(ValueType), "field")
End Sub
End Class
Structure ValueType
Dim field As Integer
End Structure
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.