Compiler Error C3610


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Error C3610.

valuetype': value type must be 'boxed' before method 'method' can be called

By default, a value type is not on the managed heap. Before you can call methods from .NET runtime classes, such as Object, you need to move the value type to the managed heap.

C3610 is only reachable using /clr:oldSyntax.

The following sample generates C3610:

// C3610.cpp  
// compile with: /clr:oldSyntax  
#using <mscorlib.dll>  
__value class A {};  
int main() {  
   A a;  
   a.GetType(); // C3610  
   // OK  
   __box A* ovar = __box(a);