C# для начинающих Пахомов Б. И



Download 8,15 Mb.
Pdf ko'rish
bet40/266
Sana20.04.2022
Hajmi8,15 Mb.
#567200
1   ...   36   37   38   39   40   41   42   43   ...   266
Bog'liq
C# for beginners


Глава 3. Базовые типы данных, переменные 
61 
n
— тоже один символ, как и длина 
s
. Тот, кто изучал С++, будет в не-
доумении. В полном. Однако и длина строки не может, увы, служить 
показателем отличия в типах 
char
и 
string

Посмотрим на структуру, скажем так, ячейки памяти, в которой разме-
щается строка. Знаем, что в ячейке должны размещаться символы из 
таблицы Unicode. Сколько? От "ничего" до "сколько хочешь". Когда мы 
пишем 
string s="";
(две кавычки подряд), то в 
s
и будет "ничего". Пус-
тая строка, как говорят. По идее, ее длина должна быть нулем. Прове-
рим это по программе вышеописанным способом, задав строку 
string 
s="";
. Действительно, 
n=0
. А что касается, "сколько хочешь", то содер-
жимое переменной типа 
string
действительно может динамически из-
меняться в сторону увеличения и/или уменьшения. Что же касается рос-
та в сторону увеличения, то здесь возможны только технические огра-
ничения. 
Вспомним теперь, что числовые и булевы типы данных не раздуваются 
и не сужаются. Сколько им памяти выделено, столько и остается за ни-
ми. Такие типы называют 
типами-значениями
. Они хранятся в стековой 
памяти программы. За памятью, занимаемой ими, следить особенно не 
надо: они удаляются из памяти по мере того, как завершается работа 
того блока, в котором они объявлены. А вот динамически меняющие 
свои размеры переменные (к таким, как мы видим, относится тип 
string
) требуют особого надзора за собой и поэтому размещаются не в 
блоке, где они объявлены, а в специальном пространстве, которое раз-
работчики назвали 
кучей
. Типы, данные которых размещаются в куче, 
называются 
ссылочными
, т. к. наряду со значениями, присущими таким 
типам данных, как набор символов Unicode в 
string
, они содержат и 
ссылку, т. е. адрес, связывающий их со своим местом в стеке (а в стеке 
же хранятся ссылки на ссылочные данные, а их начало — в управляе-
мой куче), чтобы специальный механизм очищал кучу от их присутст-
вия, когда в этом возникнет необходимость, и куча не переполнялась. 
Поэтому ячейка памяти для строки состоит из двух частей: собственно 
строки и адреса ее начала в стеке. Со ссылками очень удобно работать: 
если вы копируете одну строку в другую, то не надо перегонять огром-
ное количество символов из одной строки в другую. Достаточно скопи-
ровать в другую строку только ссылку, которая указывает, где находят-
ся данные, которые, якобы, копируются из исходной строки. Вот такова 
разница (и существенная) между строкой из одного символа и перемен-
ной типа 
char
, по определению состоящей тоже из одного символа. 
Для строк определены операции сравнения: 
==
(равно), 
!=
(не равно), 
+
(сцепление (конкатенация)). 


62 
Download 8,15 Mb.

Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   266




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish