Это не поле вашего класса, а возвращаемое значение получателя свойства - это хорошо, так как это просто возвращаемое значение функции.
Обратите внимание, что "как член класса" обычно включает свойства и, вероятно, должно быть изменено на "поле класса".
Если вы попытаетесь объявить его как поле класса (прямо или косвенно через автоматически реализуемое свойство), это потребует, чтобы часть класса (данные для ref struct
) была размещена в стеке, а остальные - в управляемой куче.
Код в вопросе определяет неавтоматизированное свойство. В результате компилятору не нужно автоматически создавать скрытое поле типа свойства в классе. Таким образом, хотя тип результата свойства ref struct
, он на самом деле не хранится в классе и, следовательно, не нарушает требования, чтобы этот тип ref struct
не был включен ни в один класс. Обратите внимание, что даже создание метода сеттера было бы хорошо само по себе - сохранить значение для этого свойства было бы непросто, но вы можете безопасно хранить содержимое ref struct
(public int value;
как в посте) в set
и воссоздать его в get
.