Изучение типов значений и ссылочных типов
- 8 мин
При наличии множества типов данных, доступных в C#, выбор подходящего типа означает, что необходимо понимать, когда можно выбрать один тип данных для другого.
Прежде чем обсуждать , почему можно выбрать один тип данных для другого, необходимо понять больше о типах данных. Кроме того, необходимо знать, как работают данные и типы данных в C# и .NET.
Что такое данные?
Ответ на вопрос "что такое данные" зависит от того, кого вы спрашиваете, и в каком контексте задается этот вопрос.
В разработке программного обеспечения данные по сути являются значением, хранящимся в памяти компьютера в виде ряда битов.
Битом является простой двоичный коммутатор, представленный как 0
или1
, скорее, "off" и "on". Один бит не кажется полезным, однако при сочетании 8 битов в последовательности они образуют байт. При использовании в байтах каждый бит принимает значение в последовательности. На самом деле, можно представить 256 различных сочетаний с всего 8 битами, если вы используете двоичную (base-2) числовую систему.
Например, в двоичной числовой системе можно представить число 195
как 11000011
. В следующей таблице показано, как это работает. Первая строка содержит восемь столбцов, которые соответствуют позиции в байте. Каждая позиция представляет собой другое числовое значение. Вторая строка может хранить значение отдельного бита, либо 0
, либо 1
.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
При добавлении числа из каждого столбца в первой строке, соответствующего 1
во второй строке, вы получите десятичный эквивалент представлению в двоичной системе счисления. В этом случае это будет 128 + 64 + 2 + 1 = 195
.
Для работы с большими значениями за пределами 255
компьютер сохраняет больше байтов (обычно 32-разрядная или 64-разрядная версия). Если вы работаете с миллионами больших чисел в научной среде, вам может потребоваться более тщательно рассмотреть, какие типы данных вы используете. Для выполнения кода может потребоваться больше памяти.
Что касается текстовых данных?
Если компьютер понимает 0
только s и 1
s, то как он позволяет работать с текстом? Используя систему, например ASCII (американский стандартный код для обмена информацией), можно использовать один байт для представления верхних и строчных букв, чисел, табуляции, внутреннего пространства, newline и многих математических символов.
Например, если вы хотите сохранить букву a
нижнего регистра в качестве значения в моем приложении, компьютер будет понимать только двоичную форму этого значения. Чтобы лучше понять, как строчная буква a
обрабатывается компьютером, мне нужно найти таблицу ASCII, которая предоставляет значения ASCII и их десятичные эквиваленты. Чтобы найти такой ресурс в Интернете, можно искать термины "ASCII lookup decimal".
В этом случае буква a
нижнего регистра эквивалентна десятичному значению 97
. Затем вы будете использовать ту же двоичную числовую систему в обратном порядке, чтобы найти, как буква a
ASCII хранится компьютером.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
Поскольку 64 + 32 + 1 = 97
, 8-битный двоичный ASCII-код для a
— это 01100001
.
Скорее всего, вам никогда не придется выполнять эти типы преобразований самостоятельно, но понимание точки зрения компьютера — это базовая концепция, особенно при рассмотрении типов данных.
Что такое тип данных?
Тип данных — это способ программирования, определяющий объем памяти для сохранения значения. Существует множество типов данных на языке C# для различных приложений и размеров данных.
Для большинства приложений, которые вы создаете в своей карьере, вы остановитесь на небольшом подмножестве доступных типов данных. Тем не менее, всё ещё жизненно важно знать, что другие существуют и почему.
Типы значений и ссылочные типы
В этом модуле основное внимание уделяется двум типам типов в C#: ссылочным типам и типам значений.
Переменные ссылочных типов хранят ссылки на их данные (объекты), то есть они указывают на значения данных, хранящиеся в другом месте. В сравнении переменные типов значений непосредственно содержат их данные. По мере получения дополнительных сведений о C#новые сведения возникают, связанные с фундаментальным различием между значениями и ссылочными типами.
Простые типы значений
Простые типы значений — это набор предопределенных типов, предоставляемых C# в качестве ключевых слов. Эти ключевые слова являются псевдонимами (псевдонимом) для предопределенных типов, определенных в библиотеке классов .NET. Например, ключевое слово int
C# — это псевдоним типа значения, определенного в библиотеке классов .NET как System.Int32
.
Простые типы значений включают многие типы данных, которые вы уже использовали, char
и bool
. Существует также множество целочисленных и с плавающей запятой типов значений, представляющих широкий диапазон целых и дробных чисел.
Обзор
- Значения хранятся в виде битов, которые являются простыми переключателями или выключениями. Объединение достаточного количества этих коммутаторов позволяет хранить только любое возможное значение.
- Существует две основные категории типов данных: значения и ссылочные типы. Разница заключается в том, как и где значения хранятся компьютером при выполнении программы.
- Простые типы значений используют псевдоним ключевого слова для представления формальных имен типов в библиотеке .NET.