c++/cli 请问ref与value的具体使用区别是什么?

问题遇到的现象和发生背景

最近学习c++/cli , 对于ref和value的class/struct定义仍然比较模糊。
资料上说ref是生成在managed heap上,而value可以在stack和managed heap上创建
但是我在vs里面试,ref class同样也可以在stack上create,编译器并没有报错,运行也一样。

那么这两种定义的边界在哪里?
如何能够感觉出差别?

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

ref 是引用变量不可能在栈上,所谓在栈上是他的引用相当于c++的指针
ref 类型变量 互相赋值是,是交换的引用,也就是地址
yourobjec^ a=gcnew youobject//如果不通过gcnew,他的默认值是NULL
yourobjec^ b;
b=a;
b和a是指向同一个物体
而value类型 b=a 则发生复制,a和b是不同的对象只是他们的类成员一样

你调试一下,看看那个对象的类型就知道了,他是CRefClas^ ,还是在托管堆上

value 无法用gcnew
要放到托管堆上除非装箱