Visual C++ .NET/Data Type/Boxing Unboxing — различия между версиями

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

Текущая версия на 15:05, 26 мая 2010

Boxing in Action

<source lang="csharp">

  1. include "stdafx.h"

using namespace System;

value class POINT { public:

   int x, y;
   POINT(int x, int y) : x(x) , y(y) {}

}; void main() {

   POINT p1(1,2);
   Object ^o = p1;
   POINT ^p2 = (POINT)o;
   Console::WriteLine("p1 x={0} y={1}\n", p1.x, p1.y);
   Console::WriteLine("o  x={0} y={1}\n", ((POINT)o).x, ((POINT)o).y);
   Console::WriteLine("p2 x={0} y={1}\n", p2->x, p2->y);

}

 </source>


unboxing int

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; Object^ f(Object^ obj) {

  Console::WriteLine("In f, with " + obj->ToString() + ".");
  return obj;

} int main() {

  int i = 1;
  int j = safe_cast<int>( f(i) );  

}

 </source>