How to: Hold Reference to Value Type in Native Type


For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

Use gcroot on the boxed type to hold a reference to a value type in a native type.

// reference_to_value_in_native.cpp  
// compile with: /clr  
#using <mscorlib.dll>  
#include <vcclr.h>   
using namespace System;   
public value struct V {  
   String ^str;  
class Native {  
   gcroot< V^ > v_handle;  
int main() {  
   Native native;  
   V v;  
   native.v_handle = v;  
   native.v_handle->str = "Hello";  
   Console::WriteLine("String in V: {0}", native.v_handle->str);  

String in V: Hello  

Using C++ Interop (Implicit PInvoke)