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 {  
public:  
   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)

Show: