Вход/Регистрация
Полное руководство. С# 4.0
вернуться

Шилдт Герберт

Шрифт:

ПРИМЕЧАНИЕ В версии 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 Короткий целочисленный без знака

В C# строго определены пределы и характер действия каждого типа значения. Исходя из требований к переносимости программ, C# не допускает в этом отношении никаких компромиссов. Например, тип int должен быть одинаковым во всех средах выполнения. Но в этом случае отпадает необходимость переписывать код для кон кретной платформы. И хотя строгое определение размерности типов значений может стать причиной незначительного падения производительности в некоторых средах, эта мера необходима для достижения переносимости программ.

ПРИМЕЧАНИЕ Помимо простых типов, в C# определены еще три категории типов значений: перечисления, структуры и обнуляемые типы. Все они рассматриваются далее в этой книге. Целочисленные типы

В C# определены девять целочисленных типов: char, byte, sbyte, short, ushort, int, uint, long и ulong. Но тип char применяется, главным образом, для пред ставления символов и поэтому рассматривается далее в этой главе. Остальные восемь целочисленных типов предназначены для числовых расчетов. Ниже представлены их диапазон представления чисел и разрядность в битах. Тип Разрядность в битах Диапазон представления чисел byte 8 0-255 sbyte 8 -128-127 short 16 -32 768-32 767 ushort 16 0-65 535 int 32 -2 147 483 648-2 147 483 647 uint 32 0-4 294 967 295 long 64 -9 223 372 036 854 775 808-9 223 372 036 854 775 807 ulong 64 0-18 446 744 073 709 551 615

Как следует из приведенной выше таблицы, в C# определены оба варианта различ ных целочисленных типов: со знаком и без знака. Целочисленные типы со знаком от личаются от аналогичных типов без знака способом интерпретации старшего разряда целого числа. Так, если в программе указано целочисленное значение со знаком, то компилятор C# сгенерирует код, в котором старший разряд целого числа использу ется в качестве флага знака. Число считается положительным, если флаг знака равен 0, и отрицательным, если он равен 1. Отрицательные числа практически всегда представ ляются методом дополнения до двух, в соответствии с которым все двоичные разряды отрицательного числа сначала инвертируются, а затем к этому числу добавляется 1.

Целочисленные типы со знаком имеют большое значение для очень многих алго ритмов, но по абсолютной величине они наполовину меньше своих аналогов без знака. Вот как, например, выглядит число 32 767 типа short в двоичном представлении. 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Если установить старший разряд этого числа равным 1, чтобы получить значение со знаком, то оно будет интерпретировано как -1, принимая во внимание формат до полнения до двух. Но если объявить его как значение типа ushort, то после установки в 1 старшего разряда оно станет равным 65 535.

Вероятно, самым распространенным в программировании целочисленным типом является тип int. Переменные типа int нередко используются для управления цикла ми, индексирования массивов и математических расчетов общего назначения. Когда же требуется целочисленное значение с большим диапазоном представления чисел, чем у типа int, то для этой цели имеется целый ряд других целочисленных типов. Так, если значение нужно сохранить без знака, то для него можно выбрать тип uint, для больших значений со знаком — тип long, а для больших значений без знака — тип ulong. В качестве примера ниже приведена программа, вычисляющая расстояние от Земли до Солнца в дюймах. Для хранения столь большого значения в ней использует ся переменная типа long. // Вычислить расстояние от Земли до Солнца в дюймах. using System; class Inches { static void Main { long inches; long miles; miles = 93000000; // 93 000 000 миль до Солнца // 5 280 футов в миле, 12 дюймов в футе, inches = miles * 5280 * 12; Console.WriteLine("Расстояние до Солнца: " + inches + " дюймов."); } }

Вот как выглядит результат выполнения этой программы. Расстояние до Солнца: 5892480000000 дюймов.

Очевидно, что этот результат нельзя было бы сохранить в переменной типа int или uint.

Самыми мелкими целочисленными типами являются byte и sbyte. Тип byte представляет целые значения без знака в пределах от 0 до 255. Переменные типа byte особенно удобны для обработки исходных двоичных данных, например байтового по тока, поступающего от некоторого устройства. А для представления мелких целых зна чений со знаком служит тип sbyte. Ниже приведен пример программы, в которой переменная типа byte используется для управления циклом, где суммируются числа от 1 до 100. // Использовать тип byte. using System; class Use_byte { static void Main { byte x; int sum; sum = 0; for(x = 1; х <= 100; х++) sum = sum + х; Console.WriteLine("Сумма чисел от 1 до 100 равна " + sum); } }

  • Читать дальше
  • 1
  • ...
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: