Int para Char em C #

96

Qual é a melhor maneira de converter um valor Int para o Char correspondente em Utf16, dado que o Int está na faixa de valores válidos?

Boaz
fonte

Respostas:

139
(char)myint;

por exemplo:

Console.WriteLine("(char)122 is {0}", (char)122);

rendimentos:

(char) 122 é z

gimel
fonte
Esta é uma resposta ruim. c = (char) 49 é 1 e não '1'
nykwil
10
@nykwil Não vejo nada de errado com a resposta de gimel.
Tom Lint,
11
@nykwil - Isso é desinformação. Console.WriteLine((char)49 == '1');Vai dar True . Como vai, char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);usar este gesso está perfeitamente bem. Sua explicação não fornece um exemplo válido de que não está funcionando. Além disso, Console.WriteLine((char)49 == 1);é falso, o que essencialmente torna seu comentário sem base.
Travis J
62
int i = 65;
char c = Convert.ToChar(i);
Corey Trager
fonte
47
Convert.ToChar eventualmente executa uma conversão explícita como "valor (char)", onde "valor" é o seu valor int. Antes de fazer isso, ele verifica se o "valor" está no intervalo de 0 a 0xffff e lança uma OverflowException se não estiver. A chamada de método extra, verificações de valor / limite e OverflowException podem ser úteis, mas se não, o desempenho será melhor se você apenas usar "valor (char)".
Triynko
17

Embora não responda exatamente a pergunta conforme formulada, mas se você precisa ou pode tomar o resultado final como string, você também pode usar

string s = Char.ConvertFromUtf32(56);

o que lhe dará pares UTF-16 substitutos se necessário, protegendo você se você estiver fora do BMP .

Boaz
fonte