Я новичок в C#. Я из мира Java. Так что я путаюсь со следующим кодом:Получить свойство по ссылке
class A
{
private PointF point;
public A(PointF point)
{
this.point = point;
}
public PointF Position
{
get { return point; }
}
}
Я хочу изменить X-координата позиции собственности, поэтому я выполняю:
A a = new A(new PointF(1,2));
PointF p = a.Position;
p.X = 100;
Console.WriteLine(a.Position.X); // <--- I have 1 here!
Интересно, почему выход НЕ ? Как я понял, я получил ссылку на личное поле с свойством Position. Я прав?
Могу ли я изменить свойство без добавления установку свойства и распространение позиции с новым PointF объекта?
Нет, вы не можете. Поскольку PointF является структурой и является типом значений. – Disposer
Да, вы можете. Можете ли вы вставить код своего PointF, я думаю, что установщик на PointF.X не делает то, что он должен делать. - EDIT: oh Я не понимал, что PointF был структурой, а не классом ... Итак, ваша переменная 'p' - это новая структура, скопированная из a.Position. Если вы хотите, чтобы это была ссылка, вам нужно либо инкапсулировать PointF в класс, либо определить новый тип как класс. Или вы можете использовать класс Point. –
Вы уверены, что ?? !!! Я тестировал, и он работает. Не могли бы вы также добавить класс PointF в свой образец. EDIT: lol я не видел структуру ни – Guillaume