Чтение онлайн

на главную

Жанры

Язык программирования 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
рейтинг книги
Вечный. Книга II

Сумеречный Стрелок 4

Карелин Сергей Витальевич
4. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 4

Все не так, как кажется

Юнина Наталья
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Все не так, как кажется

Архил...?

Кожевников Павел
1. Архил...?
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Архил...?

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Мимик нового Мира 4

Северный Лис
3. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 4

Сумеречный Стрелок 3

Карелин Сергей Витальевич
3. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 3

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

Без шансов

Семенов Павел
2. Пробуждение Системы
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Без шансов

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5