[英]Are Non blittable structs treated as reference type?
如果我有一个非blittable结构,编译器/ CLR如何处理它?
例如:如果我有一个非blittable结构X,我没有使用'ref / out'关键字传递给某个方法,实际上会传递给这个方法的是什么? 在传递给方法时,指向托管堆或编译器上实际分配的结构的指针会将结构实例的副本复制到堆栈中吗?
谢谢。
Blittable
和Non-Blittable
类型仅与编组有关。 将structs
传递给托管方法时,应用value types
的常规规则,这意味着要进行复制。
如果您想要包装原始struct
,这是您希望根据您的注释判断的,您讨论的选项是使用Tuple
,我从中看到的唯一缺点是可读性: Tuple.Item1/Item2
可能不清楚。
另一种选择是创建一个包含您的struct
作为其唯一属性的包装类:
class StructWrapper
{
YourStruct Value { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.