2016-05-17 11 views
1

特定の配列にいくつかの数値を格納するためにこのコードを取得しましたが、このエラー「割り当てられていないローカル変数 '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の場合、実際には 'int'ではなく' bytes'でなければなりません。 –

+0

よろしくお願いします。 – jamescaruso