XNA で行列と四角形の割り当てを使用した場合、それは重複または参照されますか?

StackOverflow https://stackoverflow.com//questions/12665195

  •  11-12-2019
  •  | 
  •  

質問

XNA について質問がありますが、私も初心者なので、Google で検索してもドキュメントに明確な答えが見つかりませんでした。

質問1:

これを行うと:

Rectangle afterMoveRect = collisionRectangle;
afterMoveRect.Offset((int)moveAmount.X, (int)moveAmount.Y);

私は今こうしましたか?

A.別の名前でcollisionRectangleを参照し、その後移動されたcollisionRectangle

または

B.collisionRectangle の複製コピーを作成し、そのコピーのみを移動しました。

2 番目の質問:

これを行うと:

Matrix transform = localTransform;

transform = transform * otherTransform;

localTransform のコピーを作成してそのコピーを乗算したのでしょうか、それとも localTransform を参照して別の識別​​子を介して乗算したのでしょうか?

両方の質問は同じです。元のものを(おそらく意図せずに)変更しましたか?

質問 3:

オリジナルを変更したかどうかはどうやってわかりますか?代入演算子を使用するときに、(Java の場合のように) 新しい名前で元のオブジェクトを参照しているのか、それとも他のオブジェクトのディープ コピーを作成しているのかをどのように確認すればよいでしょうか?

役に立ちましたか?

解決

は、RectangleまたはMatrixstructまたはclassである場合に完全に依存します。

struct(値型)である場合は、コピーされ、別のインスタンスに取り組んでいます。それがclass(参照タイプ)である場合は、同じオブジェクトに取り組んでいます。

MSDN、両方とも rectangle matrix は構造体であるため、コピーに取り組んでいます。

他のヒント

これは参照型と値型と呼ばれます。参照型 (基本的にクラス) は、値として与えられた場合には作成されず、参照のみがポイントされるため、その場合、新しい名前の変更は元の名前に影響します。値型 (構造体) の場合、コピーが行われ、その後 2 つは独立して処理されます。

両方 Matrix そして Rectangle 構造体なのでコピーされました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top