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

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

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

0 ответов

Другие вопросы по тегам