How to: Hold Reference to Value Type in Native Type


For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC 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)