Как изменить значение какого-либо из свойств структуры System.Drawing.Rectangle? - CodeHelper

Как изменить значение какого-либо из свойств структуры System.Drawing.Rectangle?

1

Исходные данные:

public class MyClass
{
    ...
    Rectangle Rect {get; set;}
    ...
}

При попытке присвоить какое-либо значение одному из свойств структуры Rectangle, например так:

MyClass myClass = new MyClass();
myClass.Rect.X = 13;

выдается ошибка "Cannot modify the return value of 'MyClass.Rect' because it is not a variable"

С чем это может быть связано и как с этим бороться?

Новые ответы


0

Такое поведение объясняется тем, что при обращении к getter'у свойства Rect возращается новый экземпляр значимого типа System.Drawing.Rectangle, который никак не связан с классом MyClass.

Чтобы представить себе эту ситуацию, можно рассматривать этот объект как, например, простое целое число, скажем 6. Т.е. по сути компилятор видит строки:

MyClass myClass = new MyClass(); Все Ок
6 = 13; => Ошибка!!!

И незамедлительно сообщает об этом.

Чтобы обойти это, видимо, придется получать структуру из объекта myClass, изменять ее и снова сохранять в объекте:

MyClass myClass = new MyClass();
Rectangle rect = myClass.Rect;
rect.X = 13;
myClass.Rect = rect;

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.