2016-05-17 89 views
1

我得到這個代碼來存儲一些數字到特定的數組,但IDE向我顯示了這個錯誤「使用未分配的局部變量ascchar'」。數組讀取問題c#

private void strtoasc() 
    { 
     int[] ascchar; 
     int i = 0; 
     foreach (char stg in tbox_string.Text) 
     { 
      ascchar[i] = Convert.ToInt32(stg); 
      i++; 
     } 
    } 

回答

1

你應該之前分配值數組邊界設置它,如果你初始化數組像這樣(int[] someArray=new int[somepositiveInt]),它會創建索引的指定數量(全部都爲0)陣列。那麼你可以給每個索引賦值。

private void strtoasc() 
{ 
    int[] ascchar=new int[tbox_string.Text.Length];// It will solve the issue 
    int i = 0; 
    foreach (char stg in tbox_string.Text) 
    { 
     ascchar[i] = Convert.ToInt32(stg); 
     i++; 
    } 
} 

或者,你,你會通過以下得到的結果相同:

int[] ascchar=tbox_string.Text.Select(c => (int)(c - '0')).ToArray(); 
+0

THX,問題就迎刃而解了 – jamescaruso

5

爲你眼前的問題:

的錯誤是非常直截了當。你已經聲明瞭變量ascchar,但你還沒有實際分配任何東西。你需要像int[] ascchar = new int[somenumber]這樣的東西。或者,如果您不知道您的陣列需要多大(可能是tbox_string.Text.Length?),請改用List<int>

如果你的代碼是爲了讓你回到每個字符的ASCII碼,那麼你會錯誤的(這不是如何Convert.ToInt32工作)。你可以達到同樣的事情類似:

var ascchar = Encoding.ASCIIEncoding.GetBytes(tbox_string.Text); 

https://msdn.microsoft.com/en-us/library/system.text.asciiencoding(v=vs.110).aspx

+0

喔,THX但我只需要ASCII碼和Convert.ToInt32給我。 – jamescaruso

+0

'GetBytes'給你他們。一氣呵成。如果它是ASCII,它們應該是'bytes'而不是'int'。 –

+0

好的,我會努力的。 – jamescaruso