Язык C# позволяет Вам определить два типа переменных: типы значений (value types) и типы указателей (reference types). Value types хранят актуальное значение переменной, а reference types хранят ссылку на переменную, которая хранится где-то в памяти. Все точно также, как в старом добром C и C++.
Типы value types размещаются в стеке и доступны во многих языках программирования. Типы reference types размещаются в куче (heap) и обычно представляют экземпляры класса (class instances).
[Предопределенные типы значений C# (predefined C# value types)]
sbyte: хранит 8-битное целое со знаком (signed integer). Символ s в sbyte означает, что переменная имеет знак (sign), и может быть положительной или отрицательной. Самое маленькое возможное значение может быть -128, самое большое значение 127.
byte: хранит 8-битное беззнаковое целое (unsigned integer). В отличие от переменной sbyte переменная byte не имеет знака и может хранить только положительные значения. Самое маленькое возможное значение может быть 0, самое большое значение 255.
short: хранит 16-битное целое со знаком (signed integer). Знак в sbyte означает, что переменная может быть положительной или отрицательной. Самое маленькое возможное значение может быть -32768, самое большое значение 32767.
ushort: хранит 16-битное беззнаковое целое (unsigned integer). Символ u означает, что переменная не имеет знака (unsigned). В отличие от переменной short переменная ushort не имеет знака и может хранить только положительные значения. Самое маленькое возможное значение может быть 0, самое большое значение 65535.
int: хранит 32-битное целое со знаком. Наименьшее возможное значение -2147483648, наибольшее возможное значение 2147483647.
uint: хранит 32-битное беззнаковое целое. Символ u в uint означает, что число не имеет знака. Наименьшее возможное значение 0, наибольшее 4294967295.
long: хранит 64-битное целое со знаком. Наименьшее возможное значение -9223372036854775808, наибольшее возможное значение 9223372036854775807.
char: хранит 16-битный символ Unicode. Наименьшее возможное значение для символа Unicode равно 0, наибольшее 65535.
float: хранит 32-битное число с плавающей запятой, со знаком. Наименьшее возможное значение примерно 1.5 * 10 в -45 степени, наибольшее примерно 3.4 * 10 в 38 степени.
double: хранит 64-битное число с плавающей запятой, со знаком. Наименьшее возможное значение примерно 5 * 10 в -324 степени, наибольшее примерно 1.7 * 10 в 308 степени.
decimal: хранит 128-битное число с плавающей запятой, со знаком. Переменные типа decimal хорошо подходят для финансовых вычислений.
bool: хранит одно из двух возможных значений: true или false. Использование типа bool - одна из областей, где C# отличается от наследия C и С++. В языках C и C++ целое число 0 было синонимом false, и любое ненулевое значение было синонимом true. Однако в C# тип bool не является синонимом целого типа. Вы не можете сконвертировать переменную целого типа в эквивалентную переменную bool. Если Вам нужно работать с переменными, которые представляют условия true или false, используйте в C# только переменную типа bool, и никак не целочисленную переменную.
[Предопределенные типы указателей C# (predefined C# reference types)]
string: представляет строку символов Unicode. Позволяет просто манипулировать строками и назначать их. Строки не являются мутируемыми (они immutable), т. е. будучи созданными, они не могут быть модифицированы. Так например, если Вы попытаетесь модифицировать строку (наподобие приклеить к ней другую строку), то в реальности будет создан новый объект строки, который будет содержать результирующую строку.
object: представляет тип общего назначения (general purpose type). В C# все предопределенные типы и заданные пользователем типы наследуются от типа object или класса System.Object.
Правильное использование корректных типов данных позволяет разработчикам максимально использовать возможности языка C#, однако это требует некоторого времени на изучение для тех, кто ранее использовал другие языки программирования. Для получения более подробной информации по каждому типу данных обратитесь на официальный сайт Microsoft. |