Compiler Error CS0208
Cannot take the address of, get the size of, or declare a pointer to a managed type ('type')
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 Unsafe Code and Pointers (C# Programming Guide) and sizeof.
Example
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
}
}
See Also
Reference
Change History
Date |
History |
Reason |
---|---|---|
October 2008 |
Added text and new code example. |
Customer feedback. |