Тип значения и ссылочный тип - Value type and reference type - Wikipedia

В компьютерное программирование, типы данных можно разделить на две категории: типы значений и ссылочные типы. Фактическое значение - это значение типа значения. Значение ссылочного типа - это ссылка к другому значению.[1][2]

Классификация по языкам

ЯзыкТип ценностиТип ссылки
C ++[3]логические значения, символы, целые числа, числа с плавающей запятой, классы (включая строки, списки, карты, наборы, стеки, очереди), перечисленияссылки, указатели
Ява[4]логические значения, символы, целые числа, числа с плавающей запятоймассивы, классы (включая неизменяемые строки, списки, словари, наборы, стеки, очереди, перечисления), интерфейсы, нулевой указатель
C #[5]структуры (включая логические значения, символы, целые числа, числа с плавающей запятой, числа с фиксированной запятой, списки, словари, наборы, стеки, очереди, опции), перечисленияклассы (включая неизменяемые строки, массивы, кортежи, списки, словари, наборы, стеки, очереди), интерфейсы, указатели
Быстрый[6][7]структуры (включая логические значения, символы, целые числа, числа с плавающей запятой, числа с фиксированной запятой, изменяемые строки, кортежи, изменяемые массивы, изменяемые словари, изменяемые наборы), перечисления (включая необязательные), а также определяемые пользователем структуры и перечисления, составляющие другие типы значений.функции, классы, интерфейсы
Python[8]классы (включая неизменяемые логические значения, неизменяемые целые числа, неизменяемые числа с плавающей запятой, неизменяемые комплексные числа, неизменяемые строки, байтовые строки, неизменяемые байтовые строки, неизменяемые кортежи, неизменяемые диапазоны, неизменяемые представления памяти, списки, словари, наборы, неизменяемые наборы, null указатель)
JavaScript[9]неизменяемые логические значения, неизменяемые числа с плавающей запятой, неизменяемые символы, неизменяемые строки, неопределенные, прототипы (включая списки, нулевой указатель)
OCaml[10][11]неизменяемые символы, неизменяемые целые числа, неизменяемые числа с плавающей запятой, неизменяемые кортежи, неизменяемые перечисления (включая неизменяемые единицы, неизменяемые логические значения, неизменяемые списки, неизменяемые опции), неизменяемые исключения, неизменяемые строки форматированиямассивы, неизменяемые строки, байтовые строки, словари (включая указатели)

Бокс и распаковка

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

Смотрите также

Рекомендации

  1. ^ Браун, Эрик Э. (2006). Windows Forms в действии. Остров Шелтер, Нью-Йорк: Мэннинг. п. 703. ISBN  978-1-932-39465-8.
  2. ^ Стивенс, Род (2014). Справочник программиста C # 5.0. Индианаполис, Индиана: John Wiley & Sons. п. 57. ISBN  978-1-118-84728-2.
  3. ^ "Тип - cppreference.com". en.cppreference.com.
  4. ^ «Глава 4. Типы, значения и переменные». docs.oracle.com.
  5. ^ "Ключевые слова C #". docs.microsoft.com.
  6. ^ «Структуры и классы - язык программирования Swift (Swift 5.2)». docs.swift.org.
  7. ^ «Замыкания - язык программирования Swift (Swift 5.2)». docs.swift.org.
  8. ^ «Встроенные типы - документация Python 3.8.2rc1». docs.python.org.
  9. ^ «Спецификация языка ECMAScript® 2019». www.ecma-international.org.
  10. ^ «Глава 24 Основная библиотека». caml.inria.fr.
  11. ^ «Изменяемые структуры данных». caml.inria.fr.