Quando ho usato la matrice e l'assegnazione del rettangolo in XNA duplica o si fa riferimento?

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

  •  11-12-2019
  •  | 
  •  

Domanda

Ho una domanda su XNA che anche io sono nuovo e non riesco a trovare una risposta chiara per nella documentazione dopo aver cercato Google.

Domanda 1:

Se lo faccio:

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

Ho fatto ora:

a.Refference CollisilRectngle con un altro nome e successivamente spostato CollisionRectangle

o

b.Creato una copia duplicata di CollisionRectangle e spostò solo la copia.

Seconda domanda:

Se lo faccio:

Matrix transform = localTransform;

transform = transform * otherTransform;
.

Ho creato una copia di localtransform e mulitplificata la copia o ho fatto riferimento localtransform e la moltiplicò tramite un altro identificatore?

La domanda per entrambi è la stessa, ho cambiato l'originale (forse involontariamente)

Domanda 3:

Come fai a sapere se hai cambiato l'originale o no?Come fai a sapere se fai riferimento all'originale con un nuovo nome (come in Java) o crea una copia profonda dell'altro oggetto quando si utilizza l'operatore di assegnazione?

È stato utile?

Soluzione

dipende interamente se Rectangle o Matrix è un struct o un class.

Se è un struct (un tipo di valore), verrà copiato, stai lavorando su un'istanza diversa.Se è un class (un tipo di riferimento) sarà referenziato, stai lavorando sullo stesso oggetto.

Secondo MSDN, sia rettangolo e Matrix è struttura, quindi seiLavorare sulle copie.

Altri suggerimenti

Si chiama riferimento e tipi di valore.I tipi di riferimento (lezioni fondamentalmente) non vengono create quando viene fornito come valore, viene puntato solo un riferimento, quindi in quel CAS, la modifica del nuovo nome influenzerà l'originale.In caso di tipi di valore (strisce) viene eseguita la copia ei due vengono gestiti in modo indipendente.

entrambi Matrix e Rectangle sono struttura, sono stati copiati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top