如果我有一个非blittable结构,编译器/ CLR如何处理它?</ p>
例如:如果我有一个非blittable结构X,我通过没有&#39; ref / out&#39;某些方法的关键字,实际上会传递给这个方法的什么?指向托管堆或编译器上实际分配的结构的指针在传递给方法时会将结构实例的副本复制到堆栈上吗?
感谢。
答案 0 :(得分:0)
Blittable
和Non-Blittable
类型仅与编组有关。
将structs
传递给托管方法时,value types
的常规规则适用,即表示复制。
如果您想要包装原始struct
,这是您希望根据评论判断的内容,您讨论的选项是使用Tuple
,我看到的唯一缺点就是可读性:Tuple.Item1/Item2
可能不清楚。
另一种选择是创建一个包含struct
唯一属性的包装类:
class StructWrapper
{
YourStruct Value { get; set; }
}