TOC

This article has been localized into Italian by the community.

Tipi di dati:

Il tipo Char

Il tipo di dati System.Char viene utilizzato per contenere un singolo carattere unicode. C # ha un alias per questo, chiamato char , che puoi usare quando dichiari le tue variabili char:

char ch;

E, naturalmente, puoi assegnargli immediatamente un valore, se lo desideri. In C #, un carattere è circondato da una serie di virgolette singole:

char ch = 'H';

Poiché una stringa (di cui parleremo nel prossimo capitolo) è fondamentalmente solo un intervallo di caratteri, .NET utilizza effettivamente un elenco di caratteri per rappresentare una stringa. Ciò significa anche che è possibile estrarre un singolo carattere da una stringa o iterare su una stringa e ottenere ogni carattere come tipo di dati char:

string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
    Console.WriteLine(c);
}

Sotto il cofano, un char è un valore numerico, in cui ogni carattere ha un numero specifico nell' "alfabeto" Unicode. Al momento della scrittura, ci sono più di 130.000 diversi caratteri Unicode , che vanno dall'alfabeto latino / occidentale agli script storici. Quindi, in C #, puoi facilmente passare da un tipo di dati char alla sua rappresentazione numerica, come illustrato da questa versione leggermente estesa dell'esempio precedente:

string helloWorld = "Hello, world!";
foreach(char c in helloWorld)
{
    Console.WriteLine(c + ": " + (int)c);
}

Emetterà semplicemente il carattere, seguito dalla rappresentazione numerica, semplicemente lanciando il carattere su un numero intero. Questo significa anche che puoi fare altrettanto facilmente il contrario: da un numero a un personaggio. Ma perché dovresti farlo? Bene, ci sono molti caratteri che non sono direttamente disponibili sulla maggior parte delle tastiere, ad es. il carattere di copyright (©). Puoi invece utilizzare una tabella di ricerca Unicode , trovare la versione numerica del carattere che ti serve e poi trasformarla in un char :

char ch = (char)169;
Console.WriteLine(ch);

Metodi ausiliari di Char

La classe Char ha alcuni metodi di supporto davvero interessanti, che possono aiutarti a determinare il tipo di carattere con cui hai a che fare attualmente. Questo è molto utile in molte situazioni, ad es. durante la convalida dell'input. Ecco un esempio:

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

Ho semplicemente letto il primo tasto premuto dall'utente e quindi utilizzo il metodo Char.IsDigit () per vedere se è un numero o meno. E ci sono molti metodi come questo, per verificare il tipo di carattere. Possiamo usarlo per eseguire una validazione di stringhe molto semplice:

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

Esaminiamo semplicemente il nome inserito dall'utente e utilizziamo varie versioni dei metodi Is * per verificare che l'input corrisponda ai nostri semplici requisiti. E ci sono molti altri metodi utili, come il metodo Char.IsLetterOrDigit () . Per un elenco completo, dai un'occhiata alla documentazione .

Sommario

Un tipo di dati char (alias per System.Char) viene utilizzato per rappresentare un singolo carattere Unicode. Per rappresentare più di un carattere, si utilizza una stringa, che è fondamentalmente solo un elenco di caratteri. Nel prossimo articolo, discuteremo le stringhe.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!