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

myObjectには、rect(Rectangle)というプロパティがあります。実行時にこのような四角形のX位置を変更したいが、このエラーが発生する:矩形の値にアクセスしますか?

式は値であるため、代入の対象にすることはできません。

次に、このような値をどのように変更する必要がありますか?

+0

エラーが発生していますか?より多くのコードを提供する必要があるかもしれません。 –

+0

[Expressionは値であるため、代入の対象にすることはできません](http://stackoverflow.com/questions/681464/expression-is-a-value-and-therefore-cannot-be-the-割り当ての対象) –

答えて

3

あなたはここでSystem.Drawing.Rectangleについて話しているとします。 Rectangleは値型(VB.NETではStructure)なので、myObject.rectプロパティでアクセスすると、ローカルにそのコピーが取得されます。インスタンスへの参照ではなく値のコピーがあるため、インスタンスを更新することはできません。

あなたはmyObjectRectangleプロパティを変更したい場合は、あなたが望む値で新しく構築Rectangleを参照するためにmyObjectを更新することができます。例:

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) 
関連する問題