C++ cli 我们可以使用值类的跟踪句柄吗? 使用C++ CLI,建议不要使用跟踪句柄来处理ValueC类吗?

C++ cli 我们可以使用值类的跟踪句柄吗? 使用C++ CLI,建议不要使用跟踪句柄来处理ValueC类吗?,c++-cli,C++ Cli,比如说 value class Point { }; p点; 或点^p C++/CLI允许这种语法,不幸的是,它不能直接用其他托管语言表达。最后,该值被装箱到一个对象中并存储在GC堆上。每个赋值都将被装箱,读取该值将再次解除装箱。这相当昂贵,而且99.9%的时间是错误的。值类型的要点是使代码快速,避免通过对象引用进行额外的间接寻址,并利用处理器寄存器。像Point这样的值类型值适合于两个寄存器 通过将其声明为句柄,您可以得到ref类的缺点,但增加了每次检索值类型的成员时必须取消装箱的开销。因此

比如说

value class Point {
};
p点;
或点^p

C++/CLI允许这种语法,不幸的是,它不能直接用其他托管语言表达。最后,该值被装箱到一个对象中并存储在GC堆上。每个赋值都将被装箱,读取该值将再次解除装箱。这相当昂贵,而且99.9%的时间是错误的。值类型的要点是使代码快速,避免通过对象引用进行额外的间接寻址,并利用处理器寄存器。像Point这样的值类型值适合于两个寄存器

通过将其声明为句柄,您可以得到
ref类的缺点,但增加了每次检索值类型的成员时必须取消装箱的开销。因此,这样做毫无意义,如果您需要一个具有引用类型语义的Point类,那么只需声明一个
ref class Point
,并完全避免un/装箱成本。C++ + CLI有一些设计缺陷,通过尝试使它与本机C++语义匹配而引起。这是其中之一

因此,不建议这样做