- ~ Отредактировано для более точного ответа на вопрос
Один момент заключается в том, что тип String, как и во многих языках, кодируется как Unicode, и поэтому нелогично рассматривать их как примитивные типы (например, int
), поскольку нет прямого соответствия между его двоичным кодированием и его формой для чтения человеком.
Уровень Unicode автоматически определяет типы строк, которые необходимо абстрагировать от двоичных, тогда как числа взаимозаменяемы между основанием 2 (двоичным) и основанием 10 (десятичным) с относительной легкостью.
Причина того, что примитивные переменные могут находиться в стеке, заключается в том, что для большого числа номеров достаточно места. Это не относится к более типу данных String
.
Типы операций, выполняемых со строками, на самом деле не арифметические, а основаны на булевой логике (кроме случаев подсчета строк, когда они обрабатываются как вектор или массив), поэтому имеет смысл оптимизировать структуру данных для ее первичного использования, через пространство имен System.String.