This article has been localized into Czech by the community.
Znak (char)
Datový typ System.Char se používá k uchování jednoho unicode znaku. C# má pro něj alias, který se nazývá char, který můžete použít při deklarování vašich proměnných char:
char ch;
A samozřejmě mu můžete okamžitě přiřadit hodnotu, pokud chcete. V C# je char obklopen sadou jednoduchých uvozovek:
char ch = 'H';
Vzhledem k tomu, že řetězec (který probereme v další kapitole) je v podstatě jen řada znaků, .NET ve skutečnosti používá seznam charů k reprezentaci řetězce. To také znamená, že můžete z řetězce vyjmout jednotlivý char nebo iterovat přes řetězec a získat každý znak jako datový typ char:
string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
Console.WriteLine(c);
}
Pod povrchem je char numerická hodnota, kde každý znak má specifické číslo v Unicode "abecedě". V době psaní existuje více než 130 000 různých Unicode znaků, sahajících od latinského/západního písma po historické skripty. Takže v C# můžete velmi snadno přejít od datového typu char k jeho numerické reprezentaci, jak je ilustrováno v tomto mírně rozšířeném příkladu předchozího příkladu:
string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
Console.WriteLine(c + ": " + (int)c);
}
Jednoduše vypíše znak následovaný jeho numerickou reprezentací, jednoduše přetypováním char na integer. To také znamená, že můžete stejně snadno jít opačným směrem: Z čísla na znak. Ale proč byste to dělali? No, existuje spousta znaků, které nejsou přímo dostupné na většině klávesnic, například znak autorských práv (©). Místo toho můžete použít tabulku vzhledu Unicode, najít numerickou verzi znaku, který potřebujete, a pak ho jednoduše převést na char:
char ch = (char)169;
Console.WriteLine(ch);
Char helper (pomocné) metody
Třída Char má několik opravdu skvělých pomocných metod, které vám mohou pomoci určit typ znaku, se kterým právě pracujete. To je velmi užitečné v mnoha situacích, například při validaci vstupu. Zde je příklad:
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!");
Jednoduše načtu první klávesu stisknutou uživatelem a pak použiju metodu Char.IsDigit(), abych zjistil, zda jde o číslo, nebo ne. A existuje mnoho metod jako tato, které kontrolují typ znaku. Můžeme to použít k velmi jednoduché validaci řetězců:
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);
Jednoduše projdeme jméno zadané uživatelem a použijeme různé verze metod Is* k ověření, že vstup odpovídá našim jednoduchým požadavkům. A existuje několik dalších užitečných metod, jako je metoda Char.IsLetterOrDigit(). Pro úplný seznam se podívejte na dokumentaci.
Shrnutí
Datový typ char (alias pro System.Char) se používá k reprezentaci jednoho Unicode znaku. K reprezentaci více než jednoho znaku používáte řetězec, který je v podstatě jen seznam znaků char. V dalším článku se budeme věnovat řetězcům.