Junior — Middle
Чӣ гуна роҳҳо барои ҷойгир кардани намудҳои муҳим дар хотираи идорашаванда (хол) вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
Дар C# намудҳои арзишӣ (struct) одатан дар стек ҷойгир мешаванд, аммо онҳо метавонанд дар ҳошияи идорашаванда (heap) бо роҳҳои зерин ҷойгир шаванд:
-
Дар дохили навъи истинодӣ — агар навъи арзишӣ ҳамчун майдони синф (навъи истинодӣ) бошад, он дар дохили объект дар ҳошия нигоҳ дошта мешавад.
-
Истифодаи навъи арзишӣ
boxed— ҳангоми boxing кардани навъи арзишӣ, он ба объект дар ҳошия нусхабардорӣ мешавад. -
Истифодаи
newбарои эҷоди намунаи struct дар дохили синф ё массив — массивҳои навъи арзишӣ ва майдонҳои struct дар дохили синфҳо дар ҳошия ҷойгир мешаванд.
Масалан:
struct Point { public int X, Y; }
class Container {
public Point p; // Point дар ҳошия ҳамчун қисми объекти Container нигоҳ дошта мешавад
}
Container c = new Container(); // объект c ва майдони p дар ҳошия
object o = c.p; // boxing: нусхаи p дар ҳошия ҳамчун объект
Бинобар ин, навъи арзишӣ метавонад дар ҳошия бошад, агар қисми навъи истинодӣ бошад ё пакетбандӣ шуда бошад.