Присвояване на референтни обекти в C #

обществени клас MyClass
# 123;
обществен инт X;
обществени MyClass # 40; вътр _x # 41;
# 123;
X = _x;
# 125;
# 125;
статични публични клас TwoClass
# 123;
статични публични MyClass myVar;

статично TwoClass # 40; # 41;
# 123;
myVar = нови MyClass # 40; 0 # 41; ;
# 125;

статично обществени невалидни MyFunc # 40; # 41;
# 123;
MyClass Варен = myVar;
Варен. X + = 10;
# 125;
# 125;

обществени клас Три. MonoBehaviour
# 123;
нищожен Старт # 40; # 41;
# 123;
Debug. Вход # 40; "1-" + TwoClass. myVar. X # 41; ;
TwoClass. MyFunc # 40; # 41; ;
Debug. Вход # 40; "2-" + TwoClass. myVar. X # 41; ;
# 125;
# 125;


За отстраняване на грешки ще
1-0
2-10
Въпреки факта, че ние myVar е непроменена. Както разбирам, това се дължи на факта, че "=" оператор на референтни обекти (класове) не създават пълно копие на обекта, а просто задава от лявата страна на връзката в дясно. Сега, когато сме се промени една променлива - аз и другите, защото да сочат към една и съща област на паметта.

Аз все още излезе от ситуацията, както следва:

MyClass Варен;
Варен. X = myVar. X;
Варен + = 10;

Друг въпрос е защо всичко това. може този проблем може да бъде решен по различен начин. и копират всичко, доколкото аз знам.
И от решенията на този проблем вече ..

Ето, например, е част от код.
Създавам инстанция на картата клас. от сценария за контрол, отнасящи се до функциите на картата контролер.

обществен Карта MapCreate # 40; плава MapScale, вътр MapSizeX, вътр MapSizeY # 41;
# 123;
Карта mMap;
mMap = нова карта # 40; MapScale, MapSizeX, MapSizeY # 41; ;
mMap. mMapObject = нов MapObject # 91; MapSizeX, MapSizeY # 93; ;
mMap. MapObjectSize = MapScale;
mMap. MapObjectSizeK = Mathf. Sqrt # 40; # 40; MapScale * MapScale # 41; / 2 # 41; ;
върнете mMap;
# 125;

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

. [email protected];
Платени консултации, програмиране вашите проекти Unity3D, C #, IOS, Android.

Скрит текст: шоу

ChrDesc СН = шрифт. символа # 91; писмо # 93; ;
Rect charPositionOrig = шрифт. символа. ContainsKey # 40; писмо # 41. гл. форма. новият Rect # 40; 0, 0, 0, 0 # 41; ;
charPositionOrig. Y = fontTextHeight - charPositionOrig. Y - charPositionOrig. Ръст;


След третия ред също варира font.chars [писмо] .form.Y (тази стойност е прочетено от базата данни).

Сега го е написал и си помислих - защо да не се помисли за тази стойност при вноса на шрифта? Въпреки че, ако първоначално е -не научихме много.