Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Упаковка и распаковка размерных типов данных в среде .NET.

Читайте также:
  1. I. Исследование свойств форматов сжатия графических данных
  2. V2:Профилактика девиантного поведения в молодежной среде. Социально-педагогическая работа с неформальными молодежными группами и объединениями
  3. Абстракция данных.
  4. Анализ данных на основе их сортировки.
  5. Анализ эмпирических данных (результаты анкетного обследования)
  6. Архитектура ПК. Центральные и периферийные устройства, средства ввода и средства вывода данных. Оперативная память и средства внешней памяти. Характеристики процессора.
  7. Архитектура системы управления базами данных Microsoft Access.
  8. Архитектура функционального модуля ТПТС (Типовые программно-технические средства).
  9. Асинхронные операции в среде .NET. Асинхронный вызов делегатов.
  10. Б) полезные знания, полученные посредством анализа данных.

Преобразование значимого типа в ссылочный позволяет выполнить упаковка (boxing). При упаковке экземпляра значимого типа происходит следующее.

1. В управляемой куче выделяется память. Ее объем определяется длиной значи­мого типа и двумя дополнительными членами, необходимыми для всех объектов в управляемой куче, — указателем на объект-тип и индексом SyncBlocklndex.

2. Поля значимого типа копируются в память, выделенную только что в куче.

3. Возвращается адрес объекта. Этот адрес является ссылкой на объект; значимый тип превратился в ссылочный.

Некоторые компиляторы, например компилятор С#, автоматически создают IL-код, необходимый для упаковки экземпляра значимого типа.

Распаковка в два этапа. Сначала извлекается адрес полей Point из упакованного объекта Point. Этот процесс называют распаковкой (unboxing). Затем значения полей копируются из кучи в экземпляр значимого тина, находящийся в стеке.

При распаковке ссылочного типа происходит следующее.

1. Если переменная, содержащая ссылку на упакованный значимый тип, равна null, генерируется исключение NullReferenceException.

2. Если ссылка указывает на объект, не являющийся упакованным значением тре­буемого значимого типа, генерируется исключение InvalidCastException

Когда выполняется распаковка объекта, должно быть сделано приведение к неупакованному типу.

C# имеет унифицированную систему типов, таким образом, значение любого типа может интерпретироваться как объект. Любой тип в C#, прямо или косвенно, является наследником класса object. Ссылочные типы рассматриваются как простые объекты типа object. Типы-значения - как результат выполнения операции приведения типов. Типы данных в C# разделяются на ссылочные типы и типы-значения. К типам-значениям относятся: – Простые • целочисленные (int - 32 бита, long - 64 бита) • char (16 бит, Unicode) • типы с плавающей точкой (могут выдавать обычные значения, +0, -0, +∞, -∞, NaN) • decimal (128-бит, с точностью до 28 знаков) – Структурные – Перечислимые: enum Days { Mon=1, Tue … }, по умолчанию типа int. К типам-значениям относится широкий набор примитивных типов данных, включая целые числа различной разрядности, типы с плавающей запятой различной точности, специальный тип decimal с фиксированной точностью, предназначенный для финансовых вычислений, а также символьный тип char, способный хранить символы в формате Unicode и потому удобный при разработке интернациональных приложений. Все целочисленные типы существуют в двух вариантах: знаковом и беззнаковом. Важной особенностью переменных с плавающей запятой является то, что операции над ними никогда не производят исключений, но зато результатом работы с ними могут быть значения ±∞ (как результат деления на ноль) или нечисловым значением, NaN (Not-ANumber, как результат деления 0 на 0 или операций, в котором один из операндов уже равняется NaN). Отметим, что C# содержит также специальный тип для булевских значений; переменные булевского типа могут содержать значения true или false, но в отличие от большинства современных языков программирования этим значениям не соответствует никаких численных эквивалентов Ссылочные типы • Тип object (для упаковки значений) • Тип class • Интерфейсы • Представители delegates) • Тип string • Массивы. Интерфейс представляет собой ссылочный тип, который может иметь только абстрактные элементы (аналогично методам, равным нулю, в С++). В частности, с помощью интерфейсов можно реализовать механизм множественного наследования — для этого необходимо унаследовать класс от нескольких элементов и затем явным образом реализовать заявленную функциональность. Представители (delegates) являются относительно безопасной версией указателей на функции: окружение.NET гарантирует, что представители указывают именно на допустимый объект, а не просто на некоторый адрес в памяти. Основные области применения представителей — это методы обратного вызова и асинхронные обработчики событий. Строки в C# являются полноценным ссылочным типом, но при этом обладают семантикой сравнений, характерной для типов-значений (т.е. строки равны, если равны их значения). Это можно проиллюстрировать следующим примером. Массивы в С# бывают двух типов: многомерные (например, int [,,] определяет трехмерный массив) и невыровненные (они же массивы массивов, используемые в С++; например, int [] [] определяет двухмерный массив). Несмотря на простой внешний вид, массивы являются полноценными объектами, представляющими класс System.Array. Упаковка-преобразование представляет собой процесс преобразования типа значения в тип object или любой другой тип интерфейса, реализуемый этим типом значения. Когда тип значения упаковывается средой CLR, она создает программу-оболочку значения внутри System.Object и сохраняет ее в управляемой куче. Операция распаковки-преобразования извлекает тип значения из объекта.

 

 

8. Ссылочные типы данных. Объектная модель в среде.NET и языке C#.

Объектная модель представления данных оперирует такими понятиями, как класс и объект. Классы определяют структуру данных и представляют собой набор атрибутов (текстовая строка, целое число, изображение и т.д.). Представители класса (объекты) имеют определенную структуру и могут содержать другие объекты, образуя произвольную иерархическую структуру. Объекты могут наследовать свойства, содержание и поведение объектов, которые в них содержатся.

 




Дата добавления: 2015-01-30; просмотров: 45 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | 4 | 5 | <== 6 ==> | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав