2008-11-14 7 views
74

Quelle est la meilleure façon de convertir une valeur Int en Char correspondant dans Utf16, étant donné que l'Int est dans la plage des valeurs valides?Int à Char en C#

Répondre

104
(char)myint; 

par exemple:

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

rendement:

(char) 122 est z

+0

Ceci est une mauvaise réponse. c = (char) 49 est 1 pas '1' – nykwil

+6

@nykwil Je ne vois rien de mal dans la réponse de gimel. –

+3

@nykwil - C'est de la désinformation. 'Console.WriteLine ((char) 49 == '1');' Donnera ** Vrai **. Comme le fera 'char c = (char) 49; \t chaîne s = "1two3"; \t Console.WriteLine (c == s [0]); 'Utiliser cette distribution est parfaitement bien. Votre explication ne fournit pas un exemple valide de cela ne fonctionne pas. En outre, 'Console.WriteLine ((char) 49 == 1);' est * false * ce qui rend essentiellement votre commentaire sans fondement. –

50
int i = 65; 
char c = Convert.ToChar(i); 
+36

Convert.ToChar effectue éventuellement une conversion explicite en "valeur (char)", où "valeur" est votre valeur int. Avant cela, il vérifie que "value" est compris entre 0 et 0xffff, et déclenche une exception OverflowException si ce n'est pas le cas. L'appel de méthode supplémentaire, les vérifications de valeurs/limites et OverflowException peuvent être utiles, mais si ce n'est pas le cas, les performances seront meilleures si vous utilisez simplement la valeur "(char)". – Triynko

12

Bien que ne répondant pas exactement la question telle qu'elle est formulée, mais si vous avez besoin ou pouvez prendre le résultat final sous forme de chaîne, vous pouvez également utiliser

string s = Char.ConvertFromUtf32(56) 

qui vous donnera de substitution paires de UTF16 si nécessaire, vous protéger si vous êtes hors du côté de la BMP.