Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Страница 58

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()

{

  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()

{

  // Обновление в версии 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 перечислены некоторые интересные члены этого класса.

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

Выполнение базовых манипуляций со строками

Работа с членами

System.String
выглядит вполне ожидаемо. Просто объявите переменную
string
и задействуйте предлагаемую типом функциональность через операцию точки. Не следует забывать, что несколько членов
System.String
являются статическими и потому должны вызываться на уровне класса (а не объекта).

Создайте новый проект консольного приложения по имени

FunWithStrings
и добавьте его в свое решение. Замените существующий код следующим кодом:

using System;

using System.Text;

BasicStringFunctionality();

static void BasicStringFunctionality()

{

  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", ""));