非 blittable 结构是否被视为引用类型?

Are Non blittable structs treated as reference type?

如果我有一个非 blittable 结构,compiler/CLR 如何处理它?

例如:如果我有一个非 blittable 结构 X,我将 不带 'ref/out' 关键字传递给某个方法,实际上将传递给该方法的是什么?指向托管堆上实际分配的结构的指针,或者编译器在传递给方法时会将结构的实例复制到堆栈上?

谢谢。

BlittableNon-Blittable 类型仅在编组上下文中相关。 将 structs 传递给托管方法时,应用 value types 的常规规则,这意味着会生成一个副本。

如果您想包装原来的 struct,根据您的评论判断这是您想要的,您讨论的选项是使用 Tuple,我从中看到的唯一缺点是可读性:Tuple.Item1/Item2可能不清楚。

另一种选择是制作一个包装器 class,它将包含您的 struct 作为唯一的 属性:

class StructWrapper
{
     YourStruct Value { get; set; }
}