Net framework 5, а также среды Visual Studio 2012 и C#


ссылочные и значимые типы



Download 6,27 Mb.
Pdf ko'rish
bet108/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   104   105   106   107   108   109   110   111   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ссылочные и значимые типы
CLR поддерживает две разновидности типов: 
ссылочные
(reference types) и 
значи-
мые
(value types). Большинство типов в FCL — ссылочные, но программисты чаще 
всего используют значимые. Память для ссылочных типов всегда выделяется из 
управляемой кучи, а оператор C# 
new
возвращает адрес в памяти, где размещается 
сам объект. При работе со ссылочными типами необходимо учитывать следующие 
обстоятельства, относящиеся к производительности приложения:
‰
память для ссылочных типов всегда выделяется из управляемой кучи;
‰
каждый объект, размещаемый в куче, содержит дополнительные члены, под-
лежащие инициализации;
‰
незанятые полезной информацией байты объекта обнуляются (это касается 
полей);
‰
размещение объекта в управляемой куче со временем инициирует сборку му-
сора.
Если бы все типы были ссылочными, эффективность приложения резко упала 
бы. Представьте, насколько замедлилось бы выполнение приложения, если бы при 


151
Ссылочные.и.значимые.типы
каждом обращении к значению типа 
Int32
выделялась память! Поэтому, чтобы уско-
рить обработку простых, часто используемых типов CLR предлагает «облегченные» 
типы — 
значимые
. Экземпляры этих типов обычно размещаются в стеке потока 
(хотя они могут быть встроены и в объект ссылочного типа). В представляющей 
экземпляр переменной нет указателя на экземпляр; поля экземпляра размещаются 
в самой переменной. Поскольку переменная содержит поля экземпляра, то для ра-
боты с экземпляром не нужно выполнять разыменование (dereference) экземпляра. 
Благодаря тому, что экземпляры значимых типов не обрабатываются уборщиком 
мусора, уменьшается интенсивность работы с управляемой кучей и сокращается 
количество сеансов уборки мусора, необходимых приложению на протяжении его 
существования.
В документации на .NET Framework можно сразу увидеть, какие типы отно-
сят к ссылочным, а какие — к значимым. Если тип называют 
классом
(class), речь 
идет о ссылочном типе. Например, классы 
System.Object

System.Exception

System.IO.FileStream
и 
System.Random
— это ссылочные типы. В свою очередь
значимые типы в документации называются 
структурами
(structure) и 
пере-
числениями
(enumeration). Например, структуры 
System.Int32

System.Boolean

System.Decimal

System.TimeSpan
и перечисления 
System.DayOfWeek

System.
IO.FileAttributes
и 
System.Drawing.FontStyle
являются значимыми типами.
Все структуры являются прямыми потомками абстрактного типа 
System.
ValueType
, который, в свою очередь, является производным от типа 
System.
Object
. По умолчанию все значимые типы должны быть производными от 
System.
ValueType
. Все перечисления являются производными от типа 
System.Enum
, про-
изводного от 
System.ValueType
. CLR и языки программирования по-разному 
работают с перечислениями. О перечислимых типах см. главу 15.
При определении собственного значимого типа нельзя выбрать произвольный 
базовый тип, однако значимый тип может реализовать один или несколько выбран-
ных вами интерфейсов. Кроме того, в CLR значимый тип является изолированным, 
то есть он не может служить базовым типом для какого-либо другого ссылочного 
или значимого типа. Поэтому, например, нельзя в описании нового типа указывать 
в качестве базовых типы 
Boolean

Char

Int32

Uint64

Single

Double

Decimal
и т. д.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   104   105   106   107   108   109   110   111   ...   658




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