Откровенно говоря, применять ключевые слова со знаком @ в качестве идентифи каторов не рекомендуется, кроме особых случаев. Помимо того, знак @ может пред шествовать любому идентификатору, но такая практика программирования считается плохой. Библиотека классов среды .NET Framework
В примерах программ, представленных в этой главе, применялись два встроен ных метода: WriteLine и Write. Как упоминалось выше, эти методы являются членами класса Console, относящегося к пространству имен System, которое опре деляется в библиотеке классов для среды .NET Framework. Ранее в этой главе пояс нялось, что среда C# опирается на библиотеку классов, предназначенную для среды .NET Framework, чтобы поддерживать операции ввода-вывода, обработку строк, ра боту в сети и графические пользовательские интерфейсы. Поэтому, вообще говоря, C# представляет собой определенное сочетание самого языка C# и стандартных классов .NET. Как будет показано далее, библиотека классов обеспечивает функциональные возможности, являющиеся неотъемлемой частью любой программы на С#. Для того чтобы научиться программировать на С#, нужно знать не только сам язык, но и уметь пользоваться стандартными классами. Различные элементы библиотеки классов для среды .NET Framework рассматриваются в части I этой книги, а в части II — сама библиотека по отдельным ее составляющим.
ГЛАВА 3. Типы данных, литералы
В этой главе рассматриваются три основополагающих элемента С#: типы данных, литералы и переменные. В целом, типы данных, доступные в языке программи рования, определяют те виды задач, для решения которых можно применять данный язык. Как и следовало ожидать, в C# предоставляется богатый набор встроенных типов дан ных, что делает этот язык пригодным для самого широкого применения. Любой из этих типов данных может служить для создания переменных и констант, которые в языке C# называются литералами. О значении типов данных
Типы данных имеют особенное значение в С#, посколь ку это строго типизированный язык. Это означает, что все операции подвергаются строгому контролю со стороны компилятора на соответствие типов, причем недопустимые операции не компилируются. Следовательно, строгий кон троль типов позволяет исключить ошибки и повысить на дежность программ. Для обеспечения контроля типов все переменные, выражения и значения должны принадлежать к определенному типу. Такого понятия, как "бестиповая" переменная, в данном языке программирования вообще не существует. Более того, тип значения определяет те опера ции, которые разрешается выполнять над ним. Операция, разрешенная для одного типа данных, может оказаться не допустимой для другого.
ПРИМЕЧАНИЕ В версии C# 4.0 внедрен новый тип данных, называемый dynamic и приводящий к отсрочке контроля типов до времени выполнения, вместо того чтобы производить подобный контроль во время компиляции. Поэтому тип dynamic является исключением из обычного правила контроля типов во время компиляции. Подробнее о типе dynamic речь пойдет в главе 17. Типы значений в C
В C# имеются две общие категории встроенных типов данных: типы значений и ссы лочные типы. Они отличаются по содержимому переменной. Если переменная от носится к типу значения, то она содержит само значение, например 3,1416 или 212. А если переменная относится к ссылочному типу, то она содержит ссылку на значение. Наиболее распространенным примером использования ссылочного типа является класс, но о классах и ссылочных типах речь пойдет далее в этой книге. А здесь рассма триваются типы значений.
В основу языка C# положены 13 типов значений, перечисленных в табл. 3.1. Все они называются простыми типами, поскольку состоят из единственного значения. (Иными словами, они не состоят из двух или более значений.) Они составляют основу системы типов С#, предоставляя простейшие, низкоуровневые элементы данных, которыми можно оперировать в программе. Простые типы данных иногда еще называют при митивными.
Таблица. 3.1. Типы значений в C# Тип Значение bool Логический, предоставляет два значения: “истина” или “ложь” byte 8-разрядный целочисленный без знака char Символьный decimal Десятичный (для финансовых расчетов) double С плавающей точкой двойной точности float С плавающей точкой одинарной точности int Целочисленный long Длинный целочисленный sbyte 8-разрядный целочисленный со знаком short Короткий целочисленный uint Целочисленный без знака ulong Длинный целочисленный без знака ushort Короткий целочисленный без знака