XNA で行列と四角形の割り当てを使用した場合、それは重複または参照されますか?
-
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
またはMatrix
がstruct
またはclass
である場合に完全に依存します。
struct
(値型)である場合は、コピーされ、別のインスタンスに取り組んでいます。それがclass
(参照タイプ)である場合は、同じオブジェクトに取り組んでいます。
MSDN、両方とも rectangle と matrix は構造体であるため、コピーに取り組んでいます。
所属していません StackOverflow