更新:2007 年 11 月
错误消息
固定大小的缓冲区只能通过局部变量或字段访问C# 2.0 的一个新功能是能够在 struct 的内部定义内嵌数组。这类数组只能通过局部变量或字段访问,不能作为表达式左侧的中间值被引用。此外,这些数组无法通过 static 或 readonly 的字段访问。
要解决此错误,请定义一个数组变量,然后将内嵌数组分配给该变量。或者,从表示内嵌数组的字段中移除 static 或 readonly 修饰符。
示例
下面的示例生成 CS1708。
复制代码 | |
---|---|
// CS1708.cs // compile with: /unsafe using System; unsafe public struct Foo { public fixed char name[10]; } public unsafe class C { public Foo UnsafeMethod() { Foo myFoo = new Foo(); return myFoo; } static void Main() { C myC = new C(); myC.UnsafeMethod().name[3] = 'a'; // CS1708 // Uncomment the following 2 lines to resolve: // Foo myFoo = myC.UnsafeMethod(); // myFoo.name[3] = 'a'; // The field cannot be static. C._foo1.name[3] = 'a'; // CS1708 // The field cannot be readonly. myC._foo2.name[3] = 'a'; // CS1708 } static readonly Foo _foo1; public readonly Foo _foo2; } |