当它是另一个readonly ref结构中的字段时,如何避免复制结构

时间:2018-05-16 11:31:20

标签: performance struct c#-7.2

我在下面定义的Check<T>上有一堆扩展方法。这些可以链接在一起,其中一些可以创建Check<T>的新实例(因为它本身是不可变的,但是_Success标志(以及下面未显示的其他标志)可能需要改变。)

public readonly ref struct Check<T> {
  public readonly T Value;
  readonly bool _Success;

  public Check(in T value, bool success = true) {
    Value = value;
    _Success = success;
  }
}

T是一个大于8个字节的值类型(例如自定义结构)时,我关注的是这种情况。

在创建T的新实例时,有没有办法避免将Check<T>实例复制到Value的{​​{1}}字段,而是{{1} }}字段只保留某种类型的引用到Check<T>的实例?

毕竟这个Value应该只是一个只能在堆栈上下文中使用的包装器。

0 个答案:

没有答案