英語で読む

次の方法で共有


コンパイラ エラー CS0459

読み取り専用のローカル変数のアドレスを取得することはできません。

読み取り専用のローカル変数 foreachusing、および fixedを C# 言語で生成するには、3 つのシナリオがあります。 これらそれぞれの場合において、読み取り専用のローカル変数に書き込んだり、そのアドレスを取得したりすることはできません。 このエラーは、読み取り専用のローカル変数のアドレスを取得しようとしていることが、コンパイラで認識されたときに生成されます。

次の例では、foreach ループおよび fixed ステートメント ブロック内で読み取り専用ローカル変数のアドレスの取得が試みられると、CS0459 が生成されます。

// CS0459.cs
// compile with: /unsafe

class Program
{
    public unsafe void M1()
    {
        int[] ints = new int[] { 1, 2, 3 };
        foreach (int i in ints)
        {
            int *j = &i;  // CS0459
        }

        fixed (int *i = &_i)
        {
            int **j = &i;  // CS0459
        }
    }

    private int _i = 0;
}

注意

Roslyn コンパイラが更新され、このコンパイラ エラーは Visual Studio 2017 バージョン15.5 以降で削除されたため、前のコードはこのバージョン以降では正常にコンパイルされます。