Na tabela dos tipos integrais (tipos que não suportam partes fracionárias) tivemos a inclusão do tipo de dados char. A inclusão deste tipo na tabela citada se dá por questões acadêmicas. Na verdade, se você tentar atribuir um valor numérico a um char, como no exemplo seguinte:

char letra = 45;

você obterá, em tempo de compilação, a seguinte mensagem de erro:

Código:

Char.cs(7,18): error CS0031: Constant value '45' cannot be converted to a 'char'


sta mensagem nos diz que o valor 45 não pode ser convertido para um char. Uma alternativa é efetuar uma conversão explicita de dados usando um artifício conhecido como casting (e que será estudado mais adiante). Veja uma nova versão do exemplo anterior:

char letra = (char) 71;

Ao executar esta linha de código o valor 71 é convertido para o caractere Unicode correspondente e ele é atribuído à variável letra. Para que você veja o resultado, considere a listagem seguinte:

Código:

using System;

class Caractere
{
    static void Main()
    {
        char letra = (char) 71;

        Console.WriteLine("A letra é: {0}", letra);
    }
}


Caracteres em C# ocupam 16 bits (2 bytes). Isso quer dizer que seus programas poderão exibir caracteres cujos códigos variarão de 0 até 65.535, ou seja, os caracteres e símbolos da maioria das linguagens já conhecidas. O apêndice B "Conjunto de Caracteres ASCII" servirá como referência quando você precisar consultar o código decimal que representa um determinado caractere.

O tipo de dados char é usado quando precisamos trabalhar com texto de forma separada, ou seja, um caractere por vez. Quando dois ou mais caracteres precisam ser representados, entra em cena um tipo de dados comum a quase todos os aplicativos já desenvolvidos. Este tipo de dados se chama string.

O tipo de dados string é um tipo de referência, ou seja, todas as vezes que uma variável deste tipo é declarada em seus programas, o que temos na verdade é uma referência a um objeto que encapsula um conjunto de caracteres. Mas, como objetos serão vistos mais adiante, vamos apenas escrever um exemplo que demonstra seu uso. Considere a listagem seguinte:

Código:

using System;

class Leitura
{
    static void Main()
    {
        string nome;

        Console.WriteLine("Digite seu nome:");
        nome = Console.ReadLine();
        Console.WriteLine("Seu nome é: {0}", nome);
    }
}



Compile este código e experimente executa-lo. Você verá uma mensagem solicitando que digite seu nome. Ao digitar seu nome e pressionar Enter uma nova mensagem confirma o valor informado. Vamos ver como isso aconteceu.

O primeiro passo foi declarar uma variável do tipo string:

string nome;

Em seguida temos uma chamada ao método WriteLine da classe Console para exibir a mensagem que sugere a digitação do nome:

Console.WriteLine("Digite seu nome:");

O próximo passo é obter o valor que foi digitado. Isso é feito com o método ReadLine da classe Console, que atribui à variável nome, todo o conteúdo digitado pelo usuário antes de pressionar a tecla Enter:

nome = Console.ReadLine();

Para finalizar exibimos o resultado:

Console.WriteLine("Seu nome é: {0}", nome);

C# não aplica restrições à quantidade de caracteres que podem estar contidos em uma string. A documentação oficial nos informa que esta quantidade pode variar de 0 à 2 bilhões de caracteres Unicode. Se sabemos que cada caractere ocupa 16 bits (2 bytes), então podemos afirmar que nossas strings poderão ser tão longas quanto a memória principal disponível suportar.

Antes de prosseguirmos tenha em mente que string é um tipo de dados referência a objetos. Outros tipos de referência são object, class, interface e delegate. Estes tipos serão apresentados mais adiante.