Error del compilador CS0212
Actualización: noviembre 2007
Mensaje de error
Sólo se puede adquirir la dirección de una expresión de tipo unfixed de un inicializador de instrucción fixed
You can only take the address of an unfixed expression inside of a fixed statement initializer
Para obtener más información, vea Código no seguro y punteros (Guía de programación de C#).
En el ejemplo siguiente se muestra cómo adquirir la dirección de una expresión unfixed. El código siguiente genera el error CS0212.
// CS0212a.cs
// compile with: /unsafe /target:library
public class A {
public int iField = 5;
unsafe public void M() {
A a = new A();
int* ptr = &a.iField; // CS0212
}
// OK
unsafe public void M2() {
A a = new A();
fixed (int* ptr = &a.iField) {}
}
}
El ejemplo siguiente también genera el error CS0212 y muestra una manera de resolverlo:
// CS0212b.cs
// compile with: /unsafe /target:library
using System;
public class MyClass
{
unsafe public void M()
{
// Null-terminated ASCII characters in an sbyte array
sbyte[] sbArr1 = new sbyte[] { 0x41, 0x42, 0x43, 0x00 };
sbyte* pAsciiUpper = &sbArr1[0]; // CS0212
// To resolve this error, delete the previous line and
// uncomment the following code:
// fixed (sbyte* pAsciiUpper = sbArr1)
// {
// String szAsciiUpper = new String(pAsciiUpper);
// }
}
}