在实例字段中存储对结构的只读引用



使用 C# 7.2,您可以通过in参数传递结构,这基本上是一个readonly ref

class Model {
private readonly TStruct _s;
Model(in TStruct s) {
_s = s;
}
}

在上面的代码中,TStruct是一个struct,我是将引用分配给_s还是复制整个结构?我想要的是避免不必要的内存复制。由于我只需要从s读取数据,因此我认为readonly ref可以做到这一点。不幸的是,我无法将_s标记为readonly ref.

在 C# 7.2 中,您可以通过 in 参数传递结构,该参数基本上是一个只读引用。

是的,而且是明确的。

在上面的代码中,TStruct 是一个结构体,我是将引用分配给_s还是 复制整个结构?

在分配它_s时复制整个结构。您可以避免可能再有一个副本(实现详细信息(调用构造函数,因为只传入了一个指针,但 JIT 可能会对其进行优化。

在上面的代码中,其中 TStruct 是一个结构体,我是将引用分配给_s还是 do 我复制整个结构?

然后不要使用结构体。通常,指针只能与函数调用或临时变量一起使用 - _s这些都不是。它们的存在是为了避免在操作过程中复制结构,而不是为了更改存储模型。

最新更新