You do not need to use the fixed statement to take the address of an already fixed expression
A local variable in an unsafe method or a parameter to an unsafe method is already fixed (on the stack), so you do not need to take the address of either of these two variables in a fixed expression.
The following sample generates CS0213:
public class C { public int i = 0; } public class MyClass { unsafe public static void Main() { int i = 0; i++; C c = new C(); fixed (int *j = &i) { // CS0213 // try the following line instead // fixed (int *j = &(c.i)) { } } }