2016-04-13 11 views
-3

メソッドにint []を渡して別の配列と連結し、mainに戻してコンソールに出力しようとしています。ここ コードである:int []が現在のコンテキストに存在しません

//where preTemp is another array derived in previous method 
public static int[] sesLayer(int[] preTemp) 
{ 
    //set two arrays for rtr and r1r0 
    int[] r1r0 = new int[2] { 0, 0 }; 
    int[] RTR = new int[1] { 0 }; 

    //add r1r0 to the preTemp int array 
    //set length of the new array to accomodate temp + r1r0 
    var length = new int[preTemp.Length + r1r0.Length]; 
    r1r0.CopyTo(length, 0); 
    preTemp.CopyTo(length, length.Length); 

    //add RTR to the packet 

    return preTemp; 
} 
public static int[] preLayer(int tempData) 
{ 
      string binaryTemp = Convert.ToString(tempData, 2); 
      int DLC = binaryTemp.Length; 
      binaryTemp = binaryTemp.PadLeft(64, '0'); 

      string binaryDLC = Convert.ToString(DLC, 2); 
      binaryDLC = binaryDLC.PadLeft(4, '0'); 

      string prePacket = binaryDLC + binaryTemp; 

      //convert string to int[] 
      int[] preTemp = prePacket.Select(c =>  int.Parse(c.ToString())).ToArray(); 
      return preTemp; 
} 
static void Main(string[] args) 
{ 
    int[] sesTemp = sesLayer(preTemp); //**error crops up here** 
    Console.Write(sesTemp); 
    Console.ReadLine(); 
} 

及びINT TempDataを= 58。 助けていただければ幸いです。

+3

「preTemp」はどこで宣言して初期化しますか? –

+2

それは問題です、OPはそうではありません。 –

+0

もう少し説明できますか? –

答えて

4

エラーはかなり明確です。あなたは存在しない変数を呼び出しています。

int[] sesTemp = sesLayer(preTemp); 

あなたはMain()方法の範囲内でpreTempという名前の変数を持っていません。メソッドの引数としてのみ使用しています。新しい変数を作成する必要があります。

int[] preTemp = new int[] { /* your values */ }; 
int[] sesTemp = sesLayer(preTemp); 
+0

私が心配している限り、 'preLayer'は64の長さのint []配列を返します。 したがって、変数は私の意見ではありません。 – tomek

+0

メソッド内で初期化する変数は、そのメソッド内に含まれています。 'Main()'メソッドでそれを作成し、 'preLayer'でそれを使用しようとします。これはエラーを再現する別の方法です。 –

+0

ありがとうドリュー:) – tomek

関連する問題