2016-05-17 63 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