В версии 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 перечислены некоторые интересные члены этого класса.
Выполнение базовых манипуляций со строками
Работа с членами 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", ""));
Console.WriteLine;
}
Здесь объяснять особо нечего: метод просто вызывает разнообразные члены, такие как ToUpper
и Contains
, на локальной переменной string
, чтобы получить разные форматы и трансформации. Ниже приведен вывод:
***** Fun with Strings *****
=> Basic String functionality:
Value of firstName: Freddy
firstName has 6 characters.
firstName in uppercase: FREDDY
firstName in lowercase: freddy
firstName contains the letter y?: True
firstName after replace: Fred
Несмотря на то что вывод не выглядит особо неожиданным, вывод, полученный в результате вызова метода Replace
, может вводить в заблуждение. В действительности переменная firstName
вообще не изменяется; взамен получается новая переменная string
в модифицированном формате. Чуть позже мы еще вернемся к обсуждению неизменяемой природы строк.
Выполнение конкатенации строк
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT