Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Троелсен Э. Язык программирования С# 2010 и п...docx
Скачиваний:
113
Добавлен:
21.09.2019
Размер:
6.92 Mб
Скачать

Эксперименты с числовыми типами данных

Числовые типы .NET поддерживают свойства MaxValue и МinValue, сообщающие информацию о диапазоне данных, которые может хранить данный тип. Предположим, что мы создали несколько переменных типа System.UInt16 (unsigned short – короткое целое без знака), как показано ниже.

static void Main(string[] args) {

 System.Uint16.myUInt16 = 300000;

 Console.WriteLine("Максимум для UInt16: {0} ", UInt16.MaxValue);

 Console.WriteLine("Минимум для UInt16: {0} ", UInt16.MinValue);

 Console.WriteLine("Значение равно: {0} ", myUInt16);

 Console.WriteLine("Я есть: {0} ", myUInt16.GetType());

 // Теперь для сокращения System.UInt16 (т.e для ushort).

 ushort myOtherUInt16 = 12000;

 Console.WriteLine("Максимум для UInt16: {0} ", ushort.MaxValue);

 Console.WriteLine("Минимум для UInt16: {0} ", ushort.MinValue);

 Console.WriteLine("Знaчение равно: {0} ", myOtherUInt16);

 Console.WriteLine("Я есть: {0} ", myotherUInt16.GetType());

 Console.ReadLine();

}

Вдобавок к свойствам MinValue/MaxValue системные типы могут определять другие полезные члены. Например, тип System.Double позволяет получить значения Epsilon и Infinity.

Console.WriteLine("-› double.Epsilon: {0}", double.Epsilon);

Console.WriteLine("-› double.РositiveInfinitу: {0} ", double.PositiveInfinity);

Console.WriteLine("-› double.NegativeInfinity: {0}", double.NegativeInfinity);

Console.WriteLine("-› double.MaxValue: {0}", double.MaxValue);

Console.WriteLine("-› double.MinValue: {0}", double.MinValue);

Члены System.Boolean

Теперь рассмотрим тип данных System.Boolean. В отличие от C(++), в C# единственными возможными значениями для bool являются {true | false}. В C# вы не можете назначать типу bool импровизированные значения (например, -1, 0, 1), что считается (большинством программистов) правильным нововведением. С учетом этого должно быть понятно, почему System.Boolean не поддерживает свойства MinValue/MaxValue, а поддерживает TrueString/FalseString.

// В C# нет произвольных типов Boolean!

bool b = 0; // Недопустимо!

bool b2 = -1; // Также недопустимо!

bool b3 = true; // Без проблем.

bool b4 = false; // Без проблем.

Console.WriteLine("-› bool.FalseString: {0}", bool.FalseString);

Console.WriteLine("-› bool.TrueString: {0}", bool.TrueString);

Члены System.Char

Текстовые данные в C# представляются встроенными типами данных string и char. Все .NET-языки отображают текстовые типы в соответствующие базовые типы (System.String и System.Char). Оба эти типа в своей основе используют Unicode.

Тип System.Char обеспечивает широкие функциональные возможности, далеко выходящие за рамки простого хранения символьных данных (которые, кстати, должны помещаться в одиночные кавычки). Используя статические методы System.Char, вы можете определить, является ли данный символ цифрой, буквой, знаком пунктуации или чем-то иным. Для иллюстрации рассмотрим следующий фрагмент программного кода.

static void Main(string[] args) {

 …

 // Проверьте работу следующих операторов…

 Console.WriteLine("-› char.IsDigit('К'): {0}",  char.IsDigit('К'));

 Console.WriteLine("-› char.IsDigit('9'): {0}", char.IsDigit('9'));

 Console.WriteLine("-› char.IsLetter('10', 1): {0}", char.IsLetter("10", 1));

 Console.WriteLine("-› char.IsLetter('p'): {0}", char.IsLetter('p'));

 Console.WriteLine("-› char.IsWhiteSpace('Эй, там!', 3): {0}", char.IsWhiteSpace("Эй, там!", 3));

 Console.WriteLine("-› char.IsWhiteSpace('Эй, там!', 4): {0}", char.IsWhiteSpace("Эй, там!", 4));

 Console.WriteLine("-› char.IsLettetOrDigit('?'): {0}", char.IsLetterOrDigit('?'));

 Console.WriteLine("-› char.IsPunctuation('!'): {0}", char.IsPunctuation('!'));

 Console.WriteLine("-›char.IsPunctuation('›'): {0}", char.IsPunctuation('›'));

 Console.WriteLine("-› char.IsPunctuation(','): {0}", char.IsPunctuation(','));

 …

}

Как видите, для всех этих статических членов System.Char при вызове используется следующее соглашение: следует указать либо единственный символ, либо строку с числовым индексом, который указывает местоположение проверяемого символа.