2016-05-17 5 views
1

Ich habe diesen Code, um einige Zahlen zu einem bestimmten Array zu führen, aber die IDE zeigt mir diesen Fehler "Verwendung von nicht zugewiesenen lokalen Variablen 'ascchar'".Array-Leseprobleme C#

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

Antwort

1

Sie sollten das Array Bounds vor assign Werte es gesetzt, Wenn Sie ein Array wie folgt aus (int[] someArray=new int[somepositiveInt]) initialisieren es wird ein Array mit bestimmten Anzahl von Indizes erstellen (alle sind mit 0). Dann können Sie jedem Index Werte zuweisen.

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++; 
    } 
} 

Alternativ Sie Sie erhalten die gleiche Leistung erhalten, indem die folgende Verwendung:

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

thx Siehe Problem gelöst – jamescaruso

5

Für Sie unmittelbares Problem:

Der Fehler ist ziemlich geradlinig. Sie haben die Variable ascchar deklariert, aber Sie haben ihr nichts zugewiesen. Sie benötigen etwas wie int[] ascchar = new int[somenumber]. Oder wenn Sie nicht wissen, wie groß Ihr Array sein muss (wahrscheinlich tbox_string.Text.Length?), Verwenden Sie stattdessen List<int>.

Wie auch immer, wenn Ihr Code die ASCII-Codes für jedes Zeichen zurückgeben soll, dann gehen Sie falsch vor (so funktioniert Convert.ToInt32 nicht). Sie können die gleiche Sache mit so etwas wie erreichen:

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

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

+0

ohh, thx, aber ich brauche nur die ASCII-Zahlen und die Convert.ToInt32 mir geben. – jamescaruso

+0

'GetBytes' gibt Ihnen sie. Auf einmal. Wenn es ASCII ist, sollten sie wirklich "Bytes" und nicht "Int" sein. –

+0

ok, ich werde daran arbeiten. – jamescaruso