C # 'da Char için Int


97

Int geçerli değerler aralığında olduğu göz önüne alındığında, bir Int değerini Utf16'daki karşılık gelen Char'a dönüştürmenin en iyi yolu nedir?

Yanıtlar:


142
(char)myint;

Örneğin:

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

verim:

(karakter) 122, z


Bu kötü bir cevap. c = (char) 49, 1 değil '1'
nykwil

10
@nykwil Gimel'in cevabında yanlış bir şey görmüyorum.
Tom Lint 15

11
@nykwil - Bu yanlış bilgidir. TrueConsole.WriteLine((char)49 == '1'); verecek . İrade olarak bu döküm kullanılması gayet olumlu. Açıklamanız, işe yaramadığına dair geçerli bir örnek sağlamıyor. Dahası, bir sahte esasen yorumunuz asılsız yapar. char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);Console.WriteLine((char)49 == 1);
Travis J

64
int i = 65;
char c = Convert.ToChar(i);

47
Convert.ToChar sonunda "(karakter) değeri" olarak açık bir dönüşüm gerçekleştirir, burada "değer" sizin int değerinizdir. Bunu yapmadan önce, "değer" in 0 ila 0xffff aralığında olup olmadığını kontrol eder ve değilse bir OverflowException oluşturur. Ekstra yöntem çağrısı, değer / sınır kontrolleri ve OverflowException yararlı olabilir, ancak değilse, yalnızca "(char) değeri" kullanırsanız performans daha iyi olacaktır.
Triynko

17

Formüle edildiği gibi soruyu tam olarak cevaplamasa da, ancak ihtiyacınız varsa veya son sonucu dize olarak alabilirseniz,

string s = Char.ConvertFromUtf32(56);

bu, gerekirse size UTF-16 çiftlerini verecek ve BMP'nin dışındaysanız sizi koruyacaktır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.