Alocarea de obiecte de referință în c #

public class MyClass
# 123;
public int X;
Clasa_Mea publice # 40; int _x # 41;
# 123;
X = _x;
# 125;
# 125;
static TwoClass public class
# 123;
statică myVar Clasa_Mea publice;

TwoClass statică # 40; # 41;
# 123;
myvar = new Clasa_Mea # 40; 0 # 41; ;
# 125;

static void MyFunc publice # 40; # 41;
# 123;
Clasa_Mea Varin = myVar;
Varin. X + = 10;
# 125;
# 125;

public class Trei. MonoBehaviour
# 123;
Start void # 40; # 41;
# 123;
Debug. Log # 40; "1" + TwoClass. myVar. X # 41; ;
TwoClass. MyFunc # 40; # 41; ;
Debug. Log # 40; "2-" + TwoClass. myVar. X # 41; ;
# 125;
# 125;


Depanare va
1-0
2-10
În ciuda faptului că myvar este neschimbat. Așa cum am înțeles că se datorează faptului că „=“ operator pentru obiecte de referință (clase) nu creează o copie completă a obiectului, ci pur și simplu atribuie partea stângă a legăturii spre dreapta. Acum, când ne schimbăm o singură variabilă - eu și alții pentru că ele indică aceeași zonă de memorie.

Eu încă mai ieșit din situația, după cum urmează:

Clasa_Mea Varin;
Varin. X = myVar. X;
Varin + = 10;

O altă întrebare este motivul pentru toate astea. poate această problemă poate fi rezolvată în mod diferit. și copiat în măsura în care știu.
Iar soluțiile la această problemă anymore ..

Aici, de exemplu, este o bucată de cod.
Am crea o instanta a cardului de clasă. din scriptul de control care se referă la funcția în card controler.

publice Harta MapCreate # 40; float MapScale, int MapSizeX, int MapSizeY # 41;
# 123;
Harta mmap;
mmap = new Harta # 40; MapScale, MapSizeX, MapSizeY # 41; ;
mmap. mMapObject = new MapObject # 91; MapSizeX, MapSizeY # 93; ;
mmap. MapObjectSize = MapScale;
mmap. MapObjectSizeK = Mathf. sqrt # 40; # 40; MapScale * MapScale # 41; / 2 # 41; ;
mmap reveni;
# 125;

gGame. mmap = mapController. MapCreate # 40; MapScale, MapSizeX, MapSizeY # 41; ;

. [email protected];
Plătit de consultare, programare proiectele dvs. Unity3D, C #, iOS, Android.

text ascuns: spectacol

ChrDesc ch = font. Alfabet # 91; scrisoare # 93; ;
Rect charPositionOrig = font. Alfabet. ContainsKey # 40; scrisoare # 41;. ch. formular. Dreptunghi nou # 40; 0, 0, 0, 0 # 41; ;
charPositionOrig. Y = fontTextHeight - charPositionOrig. Y - charPositionOrig. Înălțime;


După a treia linie variază, de asemenea, font.chars [scrisoarea] .form.Y (această valoare a fost citit din baza de date).

Acum a scris și gândit - de ce nu ia în considerare această valoare la importul fontului? Deși, dacă inițial am învățat -nu e mult.