Ошибка компилятора CS0208Compiler Error CS0208

Невозможно получить адрес, определить размер или объявить указатель на управляемый тип ("тип")Cannot take the address of, get the size of, or declare a pointer to a managed type ('type')

Даже при использовании ключевого слова unsafe получение адреса управляемого объекта, получение размера управляемого объекта и объявление указателя на управляемый тип не допускается.Even when used with the unsafe keyword, taking the address of a managed object, getting the size of a managed object, or declaring a pointer to a managed type is not allowed. Управляемый тип — это:A managed type is:

  • любой ссылочный тип;any reference type

  • любая структура, которая содержит ссылочный тип в качестве поля или свойства.any struct that contains a reference type as a field or property

Дополнительные сведения см. в разделе неуправляемые типы.For more information, see Unmanaged types.

ПримерExample

При компиляции следующего примера возникнет ошибка CS0208:The following sample generates CS0208:

// CS0208.cs  
// compile with: /unsafe  
  
class myClass  
{  
    public int a = 98;  
}  
  
struct myProblemStruct  
{  
    string s;  
    float f;  
}  
  
struct myGoodStruct  
{  
    int i;  
    float f;  
}  
  
public class MyClass  
{  
    unsafe public static void Main()  
    {  
        // myClass is a class, a managed type.  
        myClass s = new myClass();    
        myClass* s2 = &s;    // CS0208  
  
        // The struct contains a string, a managed type.  
        int i = sizeof(myProblemStruct); //CS0208  
  
        // The struct contains only value types.  
        i = sizeof(myGoodStruct); //OK  
  
    }  
}