영어로 읽기

다음을 통해 공유


컴파일러 오류 CS0212

고정되지 않은 식의 주소는 fixed 문의 이니셜라이저를 통해서만 가져올 수 있습니다.

자세한 내용은 안전하지 않은 코드 및 포인터를 참조하세요.

다음 샘플은 고정되지 않은 식의 주소를 가져오는 방법을 보여 줍니다. 다음 샘플에서는 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) {}  
   }  
}  

다음 샘플은 또한 CS0212를 생성하고 오류를 해결하는 방법을 보여 줍니다.

// 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);  
      // }  
   }  
}