Olası Çoğalt:
c# convert char to intC#: Convert.ToInt32 ('1')
Bu çalışır:
int val = Convert.ToInt32("1");
Ama bu kötü kokan t:
int val = Convert.ToInt32('1'); // returns 49
Bu, gerçek int'ye dönüştürülmemelidir mi?
Olası Çoğalt:
c# convert char to intC#: Convert.ToInt32 ('1')
Bu çalışır:
int val = Convert.ToInt32("1");
Ama bu kötü kokan t:
int val = Convert.ToInt32('1'); // returns 49
Bu, gerçek int'ye dönüştürülmemelidir mi?
İlk deyimi dizesi olarak argüman davranır ve Int içine değerini dönüştürür karakteri 1
ASCII değerini döndürüyor, ikincisi char olarak argüman davranır ve ASCII değerini verir
'1'
kodu (char)49
ile aynıdır (çünkü 1
karakterinin Unicode kod noktası 49'tır). Ve Convert.ToInt32(char)
, bu karakterin kod noktasını int
olarak döndürür.
Diğerlerinin işaret ettiği gibi: İkinci örneğinizde ('1'
) bir char
literal kullanıyorsunuz. Bir char
sayısal bir türüdür. Dize örneğinde olduğu gibi ("1"
) bir ayrıştırma yoktur, çünkü zaten bir sayıdır - daha geniş bir sayı biçimine (16 bit'den 32 bite) bir döküm.
Diğerleri dediği gibi, Convert ASCII kodunu döndürür. Eğer O davranır
int val = Convert.ToInt32('1'.ToString());
'1' onun ASCII eşdeğer dönmek yüzden herhangi char char ve int form, ASCII eşdeğer olarak kullanmalıdır 1 (int)
için '1'
dönüştürmek istiyorsanız. Ancak "1" durumunda, onu dize olarak ele alır ve tamsayıya dönüştürür.
Awesome :) :) :) :) – Aravin