我想知道是否有內置或易於實現的方式來處理此問題「無法修改返回值,因爲它不是一個變量「問題。修改屬性以自動解決「無法修改返回值」錯誤
比方說,我有這個類:
MyClass
{
Rectangle _rect = new Rectangle(1, 2, 3, 4);
public Rectangle rect { get { return _rect; } set { _rect = value; } }
}
這就是我想要做的事:
rect.Width += 20; // and this is where the error pops up
通常的方法是做這個:
rect = new Rectangle(rect.X, rect.Y, rect.Width + 20, rect.Height);
但是必須有一種方法來自動化它,對嗎?我並不是說像那樣添加一些屬性,如rect_width
等等(因爲我在我的真實類實現中有9個矩形,而且這樣做會很糟糕),但是會使這行代碼有效:
rect.Width += 20;
好吧,就像我在問題中所說,這將是一個壞的舉動,因爲我的類實現中有9個矩形,並且沒有辦法使引用'Rectangle'的常用方法,因爲它們不是引用類型。我想我可以嘗試擴展方法,但我還沒有成功創建任何一個。 – user1306322
@Kenneth System.Drawing.Rectangle是一個結構體。問題不在於它是不可變的(不是),而是它是一個值類型並使用值語義。 –