编译器错误 CS0842
不能在用 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;
}
}
}