Язык C# является строго типизированным языком. Каждая переменная и константа имеет тип, как и выражение, результатом вычисления которого является значение. Тип данных определяет множество значений, которые могут принимать элементы программы. Введение типа дало возможность автоматического поиска ошибок при компиляции, что приводит к созданию надежных программ.
Тип определяет для элемента программы:
- объем памяти для размещения,
- место для хранения переменной типа,
- минимальное и максимальное значения, которые могут принимать данные,
- разрешенные операции.
Типы могут быть:
- стандартные (не требуют объявления),
- пользователя (тип должен быть объявлен дополнительно).
Типы Т1 и Т2 идентичны, если:
- имеют один и тот же идентификатор типа,
- один объявлен эквивалентным другому (один из них может быть преобразован к другому). Например, целый в вещественный, символьный в строковый.
Система типов языка C# включает следующие категории:
- Типы-значения, (в переменных типа значения хранятся данные)
- Ссылочные типы, (в переменных хранятся ссылки на фактические данные)
- Типы указателей (используются только в небезопасном режиме).
Существует возможность преобразовать тип значения в ссылочный тип и обратно в тип значения с помощью упаковки-преобразования и распаковки-преобразования.