日期:2014-05-20  浏览次数:20595 次

CLR
 
 我自己定义的一个类

ref class tagReadBuffer
{
public:
int D0008;
int D0009;
};

在From里面

  tagReadBuffer ^ a = gcnew tagReadBuffer;


  Void Button(...)
  {
  tagReadBuffer ^b = a;
  b->D0008=1; 
  b->D0009=1;

  //问题就在这里 为什么 a的值也跟着改啊? 我刚步入CLR 希望前辈能告诉下 我用的是VS2010 是做C++的、

  }

------解决方案--------------------
tagReadBuffer ^ a = gcnew tagReadBuffer;//生成指针、(其实还有个同步索引块)内存空间,指针指向内存地址
tagReadBuffer ^b = a; //生成指针,b与a相同

两个指针指向同一片内存,即同一个对象
这里要把指针和对象分开来看
你也可以按浅拷贝理解

------解决方案--------------------
CLR是CLI的实现版本,是一种运行时环境,.NetFramework的主要执行引擎.

拷贝是有一个新的内存.

@sj97a007
的解释正确