コンパイラ エラー CS0459
読み取り専用のローカル変数のアドレスを取得することはできません。
読み取り専用のローカル変数 foreach
、 using
、および 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 以降で削除されたため、前のコードはこのバージョン以降では正常にコンパイルされます。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。