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

на главную

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

static void DataTypeFunctionality

{

Console.WriteLine("=> Data type Functionality:");

Console.WriteLine("Max of int: {0}", int.MaxValue);

Console.WriteLine("Min of int: {0}", int.MinValue);

Console.WriteLine("Max of double: {0}", double.MaxValue);

Console.WriteLine("Min of double: {0}", double.MinValue);

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

Console.WriteLine("double.PositiveInfinity: {0}",

double.PositiveInfinity);

Console.WriteLine("double.NegativeInfinity: {0}",

double.NegativeInfinity);

Console.WriteLine;

}

В

случае определения литерального целого числа (наподобие
500
) исполняющая среда по умолчанию назначит ему тип данных
int
. Аналогично литеральное число с плавающей точкой (такое как
55.333
) по умолчанию получит тип
double
. Чтобы установить тип данных в
long
, используйте суффикс
l
или
L
(
4L
). Для объявления переменной типа
float
применяйте с числовым значением суффикс
f
или
F
(
5.3F
), а для объявления десятичного числа используйте со значением с плавающей точкой суффикс
m
или
М
(
300.5М
). Это станет более важным при неявном объявлении переменных, как будет показано позже в главе.

Члены System.Boolean

Рассмотрим тип данных

System.Boolean
. К допустимым значениям, которые могут присваиваться типу
bool
в С#, относятся только
true
и
false
. С учетом этого должно быть понятно, что
System.Boolean
не поддерживает свойства
MinValue
и
MaxValue
, но вместо них определяет свойства
TrueString
и
FalseString
(которые выдают, соответственно, строки
"True"
и
"False"
).

Вот пример:

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

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

Члены System.Char

Текстовые данные в C# представляются посредством ключевых слов

string
и
char
, которые являются сокращенными обозначениями для типов
System.String
и
System.Char
(оба основаны на Unicode). Как вам уже может быть известно,
string
представляет непрерывное множество символов (например,
"Hello"
), a
char
— одиночную ячейку в
string
(например,
'Н'
).

Помимо возможности хранения одиночного элемента символьных данных тип

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

static void CharFunctionality

{

Console.WriteLine("=> char type Functionality:");

char myChar = 'a';

Console.WriteLine("char.IsDigit('a'): {0}", char.IsDigit(myChar));

Console.WriteLine("char.IsLetter('a'): {0}", char.IsLetter(myChar));

Console.WriteLine("char.IsWhiteSpace('Hello There', 5): {0}",

char.IsWhiteSpace("Hello There", 5));

Console.WriteLine("char.IsWhiteSpace('Hello There', 6): {0}",

char.IsWhiteSpace("Hello There", 6));

Console.WriteLine("char.IsPunctuation('?'): {0}",

char.IsPunctuation('?'));

Console.WriteLine;

}

В

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

Разбор значений из строковых данных

Типы данных .NET Core предоставляют возможность генерировать переменную лежащего в основе типа, имея текстовый эквивалент (например, путем выполнения разбора) Такой прием может оказаться исключительно удобным, когда вы хотите преобразовывать в числовые значения некоторые вводимые пользователем данные (вроде элемента, выбранного в раскрывающемся списке внутри графического пользовательского интерфейса) Ниже приведен пример метода

ParseFromStrings
, содержащий логику разбора:

static void ParseFromStrings

{

Console.WriteLine("=> Data type parsing:");

bool b = bool.Parse("True");

Console.WriteLine("Value of b: {0}", b); // Вывод значения b

double d = double.Parse("99.884");

Console.WriteLine("Value of d: {0}", d); // Вывод значения d

int i = int.Parse("8");

Console.WriteLine("Value of i: {0}", i); // Вывод значения i

char c = Char.Parse("w");

Console.WriteLine("Value of c: {0}", c); // Вывод значения с

Console.WriteLine;

}

Использование метода TryParse для разбора значений из строковых данных

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

bool b = bool.Parse("Hello");

Решение предусматривает помещение каждого вызова

Parse
в блок
try-catch
(обработка исключений подробно раскрывается в главе 7), что добавит много кода, или применение метода
TryParse
. Метод
TryParse
принимает параметр
out
(модификатор
out
рассматривается в главе 4) и возвращает значение
bool
, которое указывает, успешно ли прошел разбор. Создайте новый метод по имени
ParseFromStringWithTryParse
и поместите в него такой код:

Поделиться:
Популярные книги

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Гром над Академией Часть 3

Машуков Тимур
4. Гром над миром
Фантастика:
фэнтези
5.25
рейтинг книги
Гром над Академией Часть 3

Уязвимость

Рам Янка
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Уязвимость

Войны Наследников

Тарс Элиан
9. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Войны Наследников

Законы рода

Flow Ascold
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

«Три звезды» миллиардера. Отель для новобрачных

Тоцка Тала
2. Три звезды
Любовные романы:
современные любовные романы
7.50
рейтинг книги
«Три звезды» миллиардера. Отель для новобрачных

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

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

Месть за измену

Кофф Натализа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Месть за измену

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Не грози Дубровскому! Том 11

Панарин Антон
11. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том 11

Наваждение генерала драконов

Лунёва Мария
3. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наваждение генерала драконов

Огненный князь 4

Машуков Тимур
4. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 4

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Золушка по имени Грейс

Ром Полина
Фантастика:
фэнтези
8.63
рейтинг книги
Золушка по имени Грейс