Visual C++ .NET/Data Type/Boxing Unboxing

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

Boxing in Action

 
#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);
}


unboxing int

 
#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) );  
}