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 при вызове используется следующее соглашение: следует указать либо единственный символ, либо строку с числовым индексом, который указывает местоположение проверяемого символа.
Анализ значений строковых данных
Типы данных .NET обеспечивают возможность генерировать переменную того типа, который задается данным текстовом эквивалентом (т.е. выполнять синтаксический анализ). Эта возможность может оказаться чрезвычайно полезной тогда, когда требуется преобразовать вводимые пользователем данные (например, выделенные в раскрывающемся списке) в числовые значения. Рассмотрите следующий фрагмент программного кода.
static void Main(string[] args) {
…
bool myBool = bool.Parse("True");
Console.WriteLine("-› Значение myBool: {0}", myBool);
double myDbl
Console.WriteLine("-› Значение myDbl: {0}", myDbl);
int myInt = int.Parse("8");
Console.WriteLine("-› Значение myInt: {0}", myInt);
Char myChar = char.Раrsе("w");
Console.WriteLine(''-› Значение myChar: {0}\n", myChar);
…
}
System.DateTime и System.TimeSpan
В завершение нашего обзора базовых типов данных позволите обратить ваше внимание на то, что пространство имен System определяет несколько полезных типов данных, для которых в C# не предусмотрено ключевых слов. Это, в частности, типы DateTime и TimeSpan (задачу исследования типов System.Guid и System.Void, которые среди прочих показаны на рис. 3.19, мы оставляем на усмотрение заинтересованных читателей).
Тип DateTime содержит данные, представляющие конкретные дату (месяц, день, год) и время, которые можно отформатировать различными способами с помощью соответствующих членов. В качестве простого примера рассмотрите следующий набор операторов.
static void Main (string[] args) {
…
// Этот конструктор использует (год, месяц, день)
DateTime dt = new DateTime(2004, 10, 17);
// Какой это день недели?
Console.WriteLine("День {0} – это (1}", dt.Date, dt.DayOfWeek);
dt.AddMonths(2); // Теперь это декабрь.
Console.WriteLine ("Учет летнего времени: {0}", dt.IsDaylightSavingTime());
…
}
Структура TimeSpan позволяет с легкостью определять и преобразовывать единицы времени с помощью различных ее членов, например:
static void Main(string[] args) {
…
// Этот конструктор использует (часы, минуты, секунды)
TimeSpan ts = new TimeSpan(4, 30, 0);
Console.WriteLine(ts);
// Вычтем 15 минут из текущего значения TimeSpan и распечатаем результат.
Console.WriteLine(ts.Subtract(new TimeSpan (0, 15, 0)));
…
}
На рис. 3.20 показан вывод операторов DateTime и TimeSpan.