[c#] Невозможно изменить ошибку возвращаемого значения c #


Answers

Использование заднего хода переменной не поможет. Тип Point тип значения.

Вам необходимо присвоить целое значение Point свойству Origin: -

Origin = new Point(10, Origin.Y);

Проблема заключается в том, что когда вы получаете доступ к свойству Origin, то, что возвращается get является копией структуры Point в поле автогенерации Origin. Следовательно, ваша модификация поля X эта копия не повлияет на базовое поле. Компилятор обнаруживает это и дает вам ошибку, так как эта операция абсолютно бесполезна.

Даже если вы использовали свою собственную переменную поддержки, ваш get будет выглядеть так:

get { return myOrigin; }

Вы все равно будете возвращать копию структуры Point, и вы получите ту же ошибку.

Хм ... более внимательно прочитав ваш вопрос, возможно, вы на самом деле хотите изменить переменную поддержки непосредственно из своего класса:

myOrigin.X = 10;

Да, это было бы то, что вам нужно.

Question

Я использую автоматически реализованные свойства. Я думаю, что самый быстрый способ исправить следующее - объявить мою собственную переменную поддержки?

public Point Origin { get; set; }

Origin.X = 10; // fails with CS1612

Сообщение об ошибке: невозможно изменить возвращаемое значение выражения, поскольку оно не является переменной

Была сделана попытка изменить тип значения, который был результатом промежуточного выражения. Поскольку значение не сохраняется, значение не изменится.

Чтобы устранить эту ошибку, сохраните результат выражения в промежуточном значении или используйте ссылочный тип для промежуточного выражения.




Проблема в том, что вы указываете на значение, находящееся в стеке, и значение не будет возвращено обратно к свойству orignal, поэтому C # не позволит вам вернуть ссылку на тип значения. Я думаю, вы можете решить эту проблему, удалив свойство Origin и вместо этого используйте публичную подачу, да, я знаю, что это нехорошее решение. Другое решение - не использовать Точку, а вместо этого создать свой собственный тип Точки в качестве объекта.




Related