Int a Char en C #

96

¿Cuál es la mejor manera de convertir un valor Int al Char correspondiente en Utf16, dado que el Int está en el rango de valores válidos?

Booz
fuente

Respuestas:

139
(char)myint;

por ejemplo:

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

rinde:

(carácter) 122 es z

gimel
fuente
Esta es una mala respuesta. c = (char) 49 es 1 no '1'
nykwil
10
@nykwil No veo nada malo en la respuesta de Gimel.
Tom Lint
11
@nykwil - Eso es desinformación. Console.WriteLine((char)49 == '1');Dará True . Al igual que char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);usar este yeso, está perfectamente bien. Su explicación no proporciona un ejemplo válido de que no funcione. Además, Console.WriteLine((char)49 == 1);es falso, lo que esencialmente hace que su comentario sea infundado.
Travis J
62
int i = 65;
char c = Convert.ToChar(i);
Corey Trager
fuente
47
Convert.ToChar finalmente realiza una conversión explícita como "valor (char)", donde "valor" es su valor int. Antes de hacerlo, verifica que el "valor" esté en el rango de 0 a 0xffff, y lanza una OverflowException si no lo está. La llamada al método adicional, las comprobaciones de valor / límite y OverflowException pueden ser útiles, pero si no, el rendimiento será mejor si solo usa "(char) value".
Triynko
17

Aunque no responde exactamente a la pregunta como se formuló, pero si necesita o puede tomar el resultado final como una cadena, también puede usar

string s = Char.ConvertFromUtf32(56);

que le dará pares UTF-16 sustitutos si es necesario, protegiéndolo si está fuera del BMP .

Booz
fuente