BigInteger reallyBig2 = biggy * reallyBig;
К настоящему моменту вы должны понимать, что ключевые слова С#, представляющие базовые типы данных, имеют соответствующие типы в библиотеках базовых классов .NET Core, каждый из которых предлагает фиксированную функциональность. Хотя абсолютно все члены этих типов данных в книге подробно не рассматриваются, имеет смысл изучить их самостоятельно. Подробные описания разнообразных типов данных .NET Core можно найти в документации по .NET Core — скорее всего, вы будете удивлены объемом их встроенной функциональности.
Использование разделителей групп цифр (нововведение в версии 7.0)
Временами при присваивании числовой переменной крупных чисел цифр оказывается больше, чем способен отслеживать глаз. В версии C# 7.0 был введен разделитель групп цифр в виде символа подчеркивания (_) для данных int, long, decimal, double или шестнадцатеричных типов. Версия C# 7.2 позволяет шестнадцатеричным значениям (и рассматриваемым далее новым двоичным литералам) после открывающего объявления начинаться с символа подчеркивания. Ниже представлен пример применения нового разделителя групп цифр:
static void DigitSeparators()
{
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})
Console.WriteLine("=> Use Digit Separators:");
Console.Write("Integer:"); // Целое
Console.WriteLine(123_456);
Console.Write("Long:"); // Длинное целое
Console.WriteLine(123_456_789L);
Console.Write("Float:"); // С плавающей точкой
Console.WriteLine(123_456.1234F);
Console.Write("Double:"); // С плавающей точкой двойной точности
Console.WriteLine(123_456.12);
Console.Write("Decimal:"); // Десятичное
Console.WriteLine(123_456.12M);
// Обновление в версии 7.2: шестнадцатеричное значение
// может начинаться с символа _
Console.Write("Hex:");
Console.WriteLine(0x_00_00_FF); // Шестнадцатеричное
}
Использование двоичных литералов (нововведение в версии 7.0/7.2)
В версии C# 7.0 появился новый литерал для двоичных значений, которые представляют, скажем, битовые маски. Новый разделитель групп цифр работает с двоичными литералами, а в версии C# 7.2 разрешено начинать двоичные и шестнадцатеричные числа начинать с символа подчеркивания. Теперь двоичные числа можно записывать ожидаемым образом, например:
0b_0001_0000
Вот метод, в котором иллюстрируется использование новых литералов с разделителем групп цифр:
static void BinaryLiterals()
{
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})
// Обновление в версии 7.2: двоичное значение может начинаться с символа _
Console.WriteLine("=> Use Binary Literals:");
Console.WriteLine("Sixteen: {0}",0b_0001_0000); // 16
Console.WriteLine("Thirty Two: {0}",0b_0010_0000); // 32
Console.WriteLine("Sixty Four: {0}",0b_0100_0000); // 64
}
Работа со строковыми данными
Класс System.String предоставляет набор членов, вполне ожидаемый от служебного класса такого рода, например, члены для возвращения длины символьных данных, поиска подстрок в текущей строке и преобразования символов между верхним и нижним регистрами. В табл. 3.5 перечислены некоторые интересные члены этого класса.
Выполнение базовых манипуляций со строками
Работа с членами System.String выглядит вполне ожидаемо. Просто объявите переменную string и задействуйте предлагаемую типом функциональность через операцию точки. Не следует забывать, что несколько членов System.String являются статическими и потому должны вызываться на уровне класса (а не объекта).
Создайте новый проект консольного приложения по имени FunWithStrings и добавьте его в свое решение. Замените существующий код следующим кодом:
using System;
using System.Text;
BasicStringFunctionality();
static void BasicStringFunctionality()
{
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})
Console.WriteLine("=> Basic String functionality:");
string firstName = "Freddy";
// Вывод значения firstName.
Console.WriteLine("Value of firstName: {0}", firstName);
// Вывод длины firstname.
Console.WriteLine("firstName has {0} characters.", firstName.Length);
// Вывод firstName в верхнем регистре.
Console.WriteLine("firstName in uppercase: {0}", firstName.ToUpper());
// Вывод firstName в нижнем регистре.
Console.WriteLine("firstName in lowercase: {0}", firstName.ToLower());
// Содержит ли firstName букву у?
Console.WriteLine("firstName contains the letter y?: {0}",
firstName.Contains("y"));
// Вывод firstName после замены.
Console.WriteLine("New first name: {0}", firstName.Replace("dy", ""));