Tag: 这是

固定大小的缓冲区不能直接从“this”对象使用

我用一种结构来表示纯数据。 其中一个字段是固定大小的缓冲区,如下所示。 [StructLayout(LayoutKind.Sequential, Pack=2)] unsafe struct ImageDosHeader { … private fixed ushort _e_res[4]; … [Description(“Reserved”)] [DisplayName(“e_res[0]”)] public ushort e_res_0 { get { … } set { … } } … } 在get / set函数中,我尝试执行以下操作,但是我得到“编译器错误CS1666:您不能使用未固定表达式中包含的固定大小缓冲区。请尝试使用fixed语句。” return this._e_res[0]; 但是,以下工作: fixed (ImageDosHeader* p = &this) return p->_e_res[0]; ImageDosHeader local = this; return local._e_res[0]; 我可以轻松地使用变通方法,但是,我想知道为什么直接从这里访问固定大小的缓冲区是非法的。 或者这是我应该报告的错误? 我使用的是.NET 2.0。