Как избежать копирования структуры, если это поле в другой readonly ref struct - PullRequest
0 голосов
/ 16 мая 2018

У меня есть несколько методов расширения для 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 при создании нового экземпляра Check<T>, и вместо этого поле Value содержит только ссылку некоторого вида на экземпляр T?

После всего этого Check<T> должен быть только оберткой, предназначенной для использования только в контексте стека.

...