This article has been localized into Portuguese by the community.
O tipo Char
O tipo de dados System.Char é usado para conter um único caractere unicode. C # tem um apelido para ele, chamado char , que você pode usar ao declarar suas variáveis char:
char ch;
E, claro, você pode imediatamente atribuir um valor a ele, se quiser. Em C #, um char é cercado por um conjunto de aspas simples:
char ch = 'H';
Como uma string (que discutiremos no próximo capítulo) é basicamente apenas um intervalo de caracteres, o .NET na verdade usa uma lista de caracteres para representar uma string. Isso também significa que você pode extrair um único caractere de uma string ou iterar em uma string e obter cada caractere como um tipo de dados char:
string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
Console.WriteLine(c);
}
Sob o capacete, um char é um valor numérico, onde cada caractere tem um número específico no "alfabeto" Unicode. Até o momento, há mais de 130.000 caracteres Unicode , que vão do alfabeto latino/ocidental a scripts históricos. Portanto, em C #, é muito fácil ir de um tipo de dados char para sua representação numérica, conforme ilustrado por esta versão ligeiramente estendida do exemplo anterior:
string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
Console.WriteLine(c + ": " + (int)c);
}
Ele irá simplesmente imprimir o caractere, acompanhado de sua representação numérica, somente fazendo uma conversão explícita (casting) do caractere para um inteiro. Isso também significa que você pode facilmente fazer o contrário: De um número para um caractere. Mas porque você faria isso? Bem, há muitos caracteres que não estão diretamente disponíveis em muitos teclados, ex.: o caractere de copyright (©). Você pode usar a Tabela de definição Unicode, achar a representação numérica do caractere que você precisa, e torná-lo em um caractere:
char ch = (char)169;
Console.WriteLine(ch);
Métodos auxiliares char
A classe Char tem alguns métodos auxiliares muito interessantes, que podem ajudá-lo a determinar o tipo de caractere com o qual você está lidando atualmente. Isto é muito útil em muitas situações, por ex. ao validar a entrada. Aqui está um exemplo:
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!");
Eu simplesmente leio a primeira tecla pressionada pelo usuário e, em seguida, uso o método Char.IsDigit() para ver se é um número ou não. E existem muitos métodos como este, para verificar o tipo do personagem. Podemos usar isso para fazer uma validação de cadeia muito simples:
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);
Nós simplesmente passamos por todos os caracteres do nome digitado pelo usuário, usando vários métodos Is* para verificar se a entrada coincide com nossos simples requisitos. E há uma ampla gama de métodos úteis, assim como o Char.IsLetterOrDigit(). Para uma lista completa, leia a documentação.
Resumo
Um tipo de dados char (alias para System.Char) é usado para representar um único caractere Unicode. Para representar mais de um char, você usa uma string, que é basicamente apenas uma lista de caracteres. No próximo artigo, discutiremos strings.