У меня есть несколько методов расширения для 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>
должен быть только оберткой, предназначенной для использования только в контексте стека.