Поделиться через


Ошибка компилятора CS0842

Обновлен: Ноябрь 2007

Сообщение об ошибке

Автоматически реализованные свойства не могут быть использованы в типах, помеченных StructLayout(LayoutKind.Explicit).
Automatically implemented properties cannot be used inside a type marked with StructLayout(LayoutKind.Explicit).

Автоматически реализованные свойства имеют резервные поля, предоставленные компилятором, и эти поля недоступны для исходного кода. Поэтому они не совместимы с атрибутом LayoutKind.Explicit.

Исправление ошибки

  • Сделайте данное свойство обычным свойством, для которого можно предоставить тела методов доступа.

Пример

Следующий пример приводит к возникновению ошибки CS0842:

// cs0842.cs
using System;
using System.Runtime.InteropServices;

namespace TestNamespace
{
    [StructLayout(LayoutKind.Explicit)]
    struct Str
    {
        public int Num // CS0842
        {
            get;
            set;
        }

        static int Main()
        {
            return 1;
        }
    }
}