Язык программирования C#9 и платформа .NET5
Шрифт:
static void ParseFromStringsWithTryParse
{
Console.WriteLine("=> Data type parsing with TryParse:");
if (bool.TryParse("True", out bool b))
{
Console.WriteLine("Value of b: {0}", b); // Вывод значения b
}
else
{
Console.WriteLine("Default value of b: {0}", b);
// Вывод стандартного значения b
}
string value = "Hello";
if (double.TryParse(value, out double d))
{
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
. На заметку! После того как переменной
BigInteger
присвоено значение, модифицировать ее больше нельзя, т.к. это неизменяемые данные. Тем не менее, в классе BigInteger
определено несколько членов, которые возвращают новые объекты BigInteger
на основе модификаций данных (такие как статический метод Multiply
, используемый в следующем примере кода). В любом случае после определения переменной
BigInteger
вы обнаружите, что в этом классе определены члены, похожие на члены в других внутренних типах данных C# (например, float
либо int
). Вдобавок в классе BigInteger
определен ряд статических членов, которые позволяют применять к переменным BigInteger
базовые математические операции (наподобие сложения и умножения). Взгляните на пример работы с классом BigInteger
:
Поделиться:
Популярные книги
Пенсия для морского дьявола
1. Первый в касте бездны
Фантастика:
попаданцы
5.29
рейтинг книги
Вечный. Книга II
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Сумеречный Стрелок 4
4. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Все не так, как кажется
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Архил...?
1. Архил...?
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Газлайтер. Том 16
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идущий в тени 4
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Кодекс Охотника. Книга VII
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Дворянская кровь
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Мимик нового Мира 4
3. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Сумеречный Стрелок 3
3. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Начальник милиции
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Без шансов
2. Пробуждение Системы
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Сумеречный Стрелок 5
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00