2012-05-30 40 views
2

我有這樣在C#的字符串:加入48至串數

string only_number; 

我分配它的值= 40

當我檢查only_number[0],我得到52
當我檢查only_number[1],我得到48

爲什麼它將48添加到當前位置的字符?請建議

+3

你到底想幹什麼? – Paddy

+2

「我給它賦了一個值='40'」 - 不,你給它賦值'「40」'。你看得到差別嗎?你瞭解差異嗎? – AakashM

+0

@DotnetSparrow沒有編譯投訴將整數分配給字符串類型?在行中「**不能將源類型int轉換爲目標類型字符串**」 – Deeptechtons

回答

8

字符串基本上是char[]。所以你看到的是字符4的ASCII值和0

證明:4和0 = DIFF之間DIFF 52和48

之間。因爲它是一個字符串,所以你沒有指定它40.相反,你將它分配給"40"

+0

儘管..b/w有什麼用? b/w之間爲 – Shai

+0

。 –

4

你看到的是'4'和'0'的ASCII碼。

1

string是的arraychars,所以,這就是爲什麼你收到這些結果,它基本上顯示'4'和'0'的ASCII

+0

投票答案而不是重複 – Deeptechtons

+0

我沒有...... – Talha

3

它不會將48添加到角色中。你看到的是字符代碼,和用於數字的字符的Unicode在48開始:

'0' = 48 
'1' = 49 
'2' = 50 
'3' = 51 
'4' = 52 
'5' = 53 
'6' = 54 
'7' = 55 
'8' = 56 
'9' = 57 

字符串是char值的範圍,並且每個char值是一個16位整數,基本上表示代碼點Unicode字符集。

當您從only_number[0]讀你得到一個char值是'4',併爲字符代碼爲52.所以,你所做的是從字符串讀取字符,然後轉換,爲一個整數你面前顯示它。

所以:

char c = only_number[0]; 
Console.WriteLine(c); // displays 4 

int n = (int)only_number[0]; // cast to integer 
Console.WriteLine(n); // displays 52 

int m = only_number[0]; // the cast is not needed, but the value is cast anyway 
Console.WriteLine(m); // displays 52