{
Console.WriteLine("Value of d: {0}", d);
}
else
{
// Преобразование входного значения в double потерпело неудачу
// и переменной было присвоено стандартное значение.
Console.WriteLine("Failed to convert the input ({0}) to a double
and
the variable was
assigned the default {1}", value,d);
}
Console.WriteLine;
}
Если вы только начали осваивать программирование и не знаете, как работают операторы if/else
, то они подробно рассматриваются позже в главе. В приведенном выше примере важно отметить, что когда строка может быть преобразована в запрошенный тип данных, метод TryParse
возвращает true
и присваивает разобранное значение переменной, переданной методу. В случае невозможности разбора значения переменной присваивается стандартное значение, а метод TryParse
возвращает false
.
Использование типов System.DateTime и System.TimeSpan
В пространстве имен System
определено несколько полезных типов данных, для которых отсутствуют ключевые слова языка С#, в том числе структуры DateTime
и TimeSpan
. (При желании можете самостоятельно ознакомиться с типом System.Void
, показанным на рис. 3.2.)
Тип DateTime
содержит данные, представляющие специфичное значение даты (месяц, день, год) и времени, которые могут форматироваться разнообразными способами с применением членов этого типа. Структура TimeSpan
позволяет легко определять и трансформировать единицы времени, используя различные ее члены.
static void UseDatesAndTimes
{
Console.WriteLine("=> Dates and Times:");
// Этот конструктор принимает год, месяц и день.
DateTime dt = new DateTime(2015, 10, 17);
// Какой это день месяца?
Console.WriteLine("The day of {0} is {1}", dt.Date, dt.DayOfWeek);
// Сейчас месяц декабрь.
dt = dt.AddMonths(2);
Console.WriteLine("Daylight savings: {0}", dt.IsDaylightSavingTime);
// Этот конструктор принимает часы, минуты и секунды.
TimeSpan ts = new TimeSpan(4, 30, 0);
Console.WriteLine(ts);
// Вычесть 15 минут из текущего значения TimeSpan и вывести результат.
Console.WriteLine(ts.Subtract(new TimeSpan(0, 15, 0)));
}
Работа с пространством имен System.Numerics
В пространстве имен System.Numerics
определена структура по имени BigInteger
. Тип данных BigInteger
может применяться для представления огромных числовых значений, которые не ограничены фиксированным верхним или нижним пределом.
На заметку! В пространстве имен System.Numerics
также определена вторая структура по имени Complex
, которая позволяет моделировать математически сложные числовые данные (например, мнимые единицы, вещественные данные, гиперболические тангенсы). Дополнительные сведения о структуре Complex
можно найти в документации по .NET Core.
Несмотря на то что во многих приложениях .NET Core потребность в структуре BigInteger
может никогда не возникать, если все-таки необходимо определить большое числовое значение, то в первую очередь понадобится добавить в файл показанную ниже директиву using
:
// Здесь определен тип BigInteger:
using System.Numerics;
Теперь с применением операции new
можно создать переменную BigInteger
. Внутри конструктора можно указать числовое значение, включая данные с плавающей точкой. Однако компилятор C# неявно типизирует числа не с плавающей точкой как int
, а числа с плавающей точкой — как double
. Как же тогда установить для BigInteger
большое значение, не переполнив стандартные типы данных, которые задействуются для неформатированных числовых значений?
Простейший подход предусматривает определение большого числового значения в виде текстового литерала, который затем может быть преобразован в переменную BigInteger
посредством статического метода Parse
. При желании можно также передавать байтовый массив непосредственно конструктору класса BigInteger
.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT