Compiler Error CS0459
Cannot take the address of a read-only local variable
There are three common scenarios in the C# language that generate read-only local variables: foreach, using, and fixed. In each of these cases, you are not allowed to write to the read-only local variable, or to take its address. This error is generated when the compiler realizes you are trying to take the address of a read-only local variable.
Example
The following example generates CS0459 when an attempt is made to take the address of a read-only local variable in a foreach loop and in a fixed statement block.
// CS0459.cs
// compile with: /unsafe
class A
{
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;
}