2011-04-14 38 views
1
myObject.rect.X = 100 

myObject有一個名爲rect的屬性(它是一個Rectangle)。在運行期間,我希望chage這個矩形的X位置,但我給出了這個錯誤:訪問矩形的值?

表達式是一個值,因此不能作爲賦值的目標。

那麼,我該如何改變這些值呢?

+0

您確定這是產生錯誤的行嗎?您可能需要提供更多代碼。 – 2011-04-14 01:30:56

+0

[Expression是一個值,因此不能作爲賦值的目標]的可能重複(http://stackoverflow.com/questions/681464/expression-is-a-value-and-therefore-cannot-be-the-目標的-AN-分配) – 2011-04-14 01:45:17

回答

3

我假設你在說這裏是System.Drawing.RectangleRectangle是一個值類型(VB.NET中的Structure),所以當您通過myObject.rect屬性訪問它時,會在本地獲得它的一個副本。由於您擁有值的副本而不是對實例的引用,因此無法對其進行更新。

如果你想改變myObjectRectangle屬性,你可以更新myObject指一個新建Rectangle與你的願望值。例如:

Dim myObject As MyObject = New MyObject() 

    ' Prints 0 
    Console.WriteLine(myObject.rect.X) 

    ' Refer to a new rectangle with X=100 and all other values kept the same 
    myObject.rect = New Rectangle(
     100, 
     myObject.rect.Y, 
     myObject.rect.Width, 
     myObject.rect.Height 
    ) 

    ' Prints 100 
    Console.WriteLine(myObject.rect.X)