Visual C++ .NET/Language Basics/gcroot

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

auto gcroot

<source lang="csharp">

  1. include "stdafx.h"
  2. include <msclr/gcroot.h>
  3. include <msclr/auto_gcroot.h>

using namespace System; using namespace msclr; ref class MyClass {

  public:
    void f()
    {
       Console::WriteLine("managed member function");
    }
    ~MyClass()
    {
       Console::WriteLine("destructor");
    }
   

}; class N {

  gcroot<MyClass^> r_gcroot;
  auto_gcroot<MyClass^> r_auto_gcroot;
  public:
     N()
     {
         r_gcroot = gcnew MyClass();
         r_gcroot->f();
         r_auto_gcroot = gcnew MyClass();
         r_auto_gcroot->f();
     }
     

}; int main() {

  N n;

}

 </source>


gcroot and auto gcroot

<source lang="csharp">

  1. include "stdafx.h"
  2. include <msclr/gcroot.h>
  3. include <msclr/auto_gcroot.h>

using namespace System; using namespace msclr; ref class MyClass {

  public:
    void f()
    {
       Console::WriteLine("managed member function");
    }
    ~MyClass()
    {
       Console::WriteLine("destructor");
    }

}; int main() {

  gcroot<MyClass^> r_gcroot;
  auto_gcroot<MyClass^> r_auto_gcroot;
  r_gcroot = gcnew MyClass();
  r_gcroot->f();
  r_auto_gcroot = gcnew MyClass();
  r_auto_gcroot->f();

}

 </source>