コンパイラ エラー CS1666
fixed でない式に含まれる固定サイズ バッファーは使用できません。 fixed ステートメントを使用してください。
このエラーは、それ自体が fixed でないインスタンスが含まれている式で固定サイズのバッファーを使うと発生します。 ランタイムは、メモリ アクセスを最適化するために、fixed でないインスタンスを自由に移動します。これにより、固定サイズのバッファーを使用したときにエラーが発生することがあります。 このエラーを回避するには、fixed
ステートメントを使います。
次の例では CS1666 が生成されます。
// CS1666.cs
// compile with: /unsafe /target:library
unsafe struct S
{
public fixed int buffer[1];
}
unsafe class Test
{
S field = new S();
private bool example1()
{
return (field.buffer[0] == 0); // CS1666 error
}
private bool example2()
{
// OK
fixed (S* p = &field)
{
return (p->buffer[0] == 0);
}
}
private bool example3()
{
S local = new S();
return (local.buffer[0] == 0);
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。