This article has been localized into Russian by the community.
Тип Char
Тип данных System.Char используется для хранения одного символа юникода. В C# есть псевдоним char, который можно использовать при объявлении переменных char:
char ch;
И, конечно, вы можете сразу присвоить ему значение, если хотите. В C# символ char окружен набором одинарных кавычек:
char ch = 'H';
Поскольку строка (о которой мы поговорим в следующей главе) в основном представляет собой диапазон символов, .NET фактически использует список символов для представления строки. Это также означает, что можно извлечь один символ из строки или выполнить итерацию по строке и получить каждый символ как тип данных char:
string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
Console.WriteLine(c);
}
Символ - это числовое значение, где каждый символ имеет определенное номер в "алфавите" Юникода. На момент написания, существует более 130.000 различный символов Unicode, начиная с латинского / Западного алфавита до исторических шрифтов. Таким образом, в C# можно очень легко перейти от типа данных char к числовому представлению, как показано в этой слегка расширенной версии предыдущего примера:
string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
Console.WriteLine(c + ": " + (int)c);
}
Он будет просто выводить символ, сопровождаемый числовым представлением, просто за счет приведения char к целому числу. Это также означает, что вы можете так же легко пойти по другому пути: от числа к основанию. Но зачем вам это? Ну, есть много символов, которые не доступны непосредственно на большинстве клавиатур, например, символ авторского права ( © ). Вместо этого можно использовать Unicode lookup table, найдите числовую версию символа, который вам нужен, а затем просто превратить его в символ:
char ch = (char)169;
Console.WriteLine(ch);
Вспомогательные методы Char
Класс Char имеет некоторые действительно классные вспомогательные методы, которые могут помочь вам определить тип char, с которым вы в настоящее время имеете дело. Он очень полезен во многих ситуациях, например, при проверке ввода. Вот пример:
Console.WriteLine("Enter a single number:");
char ch = Console.ReadKey(true).KeyChar;
if (Char.IsDigit(ch))
Console.WriteLine("Thank you!");
else
Console.WriteLine("Wrong - please try again!");
Я просто считываю первую клавишу, нажатую пользователем, а затем использую Char.IsDigit() метод, чтобы определить, цифра это или нет. И есть много методов, как этот, чтобы проверить Тип символа. Мы можем использовать это, чтобы сделать очень простую проверку строки:
Console.WriteLine("Write your name:");
string name = Console.ReadLine();
bool isValid = true;
for(int i = 0; i < name.Length; i++)
{
char ch = name[i];
if((i == 0) && ((!Char.IsLetter(ch)) || (!Char.IsUpper(ch))))
{
Console.WriteLine("The first character has to be an uppercase letter!");
isValid = false;
break;
}
if(Char.IsDigit(ch))
{
Console.WriteLine("No digits allowed!");
isValid = false;
break;
}
}
if (isValid)
Console.WriteLine("Hello, " + name);
Мы просто перебираем имя, введенное пользователем, и используем различные версии методов Is*, чтобы проверить, что ввод соответствует нашим простым требованиям. И есть несколько других полезных методов, таких как метод Char.IsLetterOrDigit(). Полный их список можно посмотреть на documentation.
Резюме
Тип данных char (псевдоним System.Char) используется для представления одного символа Юникода. Для представления нескольких символов используется строка, которая в основном представляет собой набор символов. В следующей статье мы обсудим строки.