C#. Категории (группы) типов данных. Значимые типы. Ссылочные типы. Базовые типы данных. Обзор

Категории (группы) типов данных в C#. Значимые типы. Ссылочные типы. Базовые типы данных. Обзор


Содержание


1. Что такое тип данных в языке C#?

В языке C# (как и в любом другом языке) тип данных – это характеристика переменной (объекта), константы или литерала, которая определяет:

  • множество допустимых значений;
  • внутреннюю форму представления данных в компьютере;
  • множество операций, допустимых для данного типа.

 

2. Какие категории (группы) типов данных определены в языке C#?

Любой тип данных в языке программирования C# представлен классом или структурой. Соответственно все типы данных языка C# делятся на две категории (группы):

  • значимые типы или типы-значения (value-types). Типы-значения еще называют структурные типы или базовые типы. Значимые типы описываются структурами;
  • ссылочные типы (reference-types). Ссылочные типы описываются классами.

 

3. Какие отличия между типами-значениями и ссылочными типами?

Можно выделить следующие отличия между типами-значениями и ссылочными типами:

  • типы-значения (значимые типы) описываются структурами. Ссылочные типы описываются классами;
  • при объявлении переменной значимого типа экземпляр этой переменной размещается в стеке полностью. При объявлении ссылочной переменной, в стеке размещается только ссылка на экземпляр, а сам экземпляр (данные + методы) размещается в так называемой управляемой «куче» (managed heap);
  • при копировании объектов значимого типа создается полный дубликат объекта (экземпляра). При копировании объектов ссылочного типа копируется только ссылка на объект, таким образом обе ссылки указывают на один и тот же участок памяти.

 

4. Целесообразность применения каждой категории типов данных

Для каждой категории типов определены условия их применения. Если важным есть небольшой объем памяти и быстродействие, то более целесообразно применять значимые типы. Если для сохранения данных нужен большой объем памяти, то более целесообразно использовать ссылочные типы. Это связано с тем, что размер управляемой «кучи» больше за размера стека.

 

5. Понятие базового типа в .NET.

Базовые типы – это типы-значения, которые описываются структурами. В языке C# любому базовому типу соответствует объявление некоторой структуры, которая входит в состав платформы .NET.

Например. Типу float соответствует .NET структура System.Single; типу long соответствует .NET структура System.Int64.
Более детально об использовании базовых типов в C# описывается здесь.



 

6. Структура системы базовых типов в .NET

Все встроенные типы C# являются производными от класса Object. На рисунке 1  отображена часть структуры базовой системы типов языка C#. Как видно из рисунка, типы-значения унаследованы от класса ValueType, который унаследован от класса Object.

C#. Общая сокращенная иерархическая структура .NET типов

Рисунок 1. Общая сокращенная иерархическая структура .NET типов

 

7. Целочисленные базовые типы данных и их .NET эквиваленты

Таблица базовых целочисленных типов данных и структур, соответствующих этим типам, изображена на рисунке 2. Отображаются:

  • название типа;
  • название .NET структуры, которая соответствует этому типу;
  • наличие (отсутствие) знака числа;
  • диапазон допустимых значений, которые может принимать переменная данного типа.

 

C#. Целочисленные базовые типы данных и соответствующие им .NET структуры

Рисунок 2. Целочисленные базовые типы данных и соответствующие им .NET структуры

 

8. Типы данных для чисел с плавающей запятой и их .NET эквиваленты

На рисунке 3 изображены базовые типы данных для чисел с плавающей запятой а также их характеристики.

 

C#. Типы данных для чисел с плавающей точкой и соответствующие им .NET структуры

Рисунок 3. Типы данных для чисел с плавающей точкой и соответствующие им .NET структуры

 

9. Символьный тип данных char. Структура System.Char

Для представления символьной информации в языке C# используется базовый тип char. В .NET этому типу соответствует структура System.Char. Каждая переменная типа char представляет символ в формате Unicode. В этом формате каждый символ идентифицируется 21-битным скалярным значением, которое называется «code point» (кодовая точка). Такое представление соответствует кодовой форме UTF-16 в которой кодовая точка декодируется в одно или несколько 16-битных значений.

Структура System.Char, описывающая тип char, содержит:

  • 16-битное значение в диапазоне от 0x0000 до 0xFFFF;
  • набор методов для сравнения объектов типа char.

 

10. Логический тип данных bool. Структура System.Boolean

В базовой системе типов .NET логическому типу данных bool соответствует структура System.Boolean. Переменная типа bool может принимать одно из двух значений: true (истина) или false (ложь).

 


Связанные темы