public class Reference { private T _value; public T Value { get => _value; set => _value = value; } public Reference() : this(default) { } public Reference(T initial = default) { _value = initial; } public static implicit operator Reference(T value) => new Reference(value); public static implicit operator T(Reference reference) => reference.Value; }