コンパイラ エラー CS1708
更新 : 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;
}