2012-02-19 21 views
2

我看了以前的問題,但沒有幫助。我有一個用c#編寫的非常簡單的函數。 它給我編譯器錯誤「使用未分配的局部變量'linea'」(第(2)行)。 什麼可能是錯的?並可以告訴我如何糾正它?使用未分配的局部變量(非常簡單的函數與字符串數組)。 C#語言

public void llenarTabla() 
    { 

     int idx; 
     string[] linea; (1) 
     for (idx = 0; idx < numListas; idx++) 
     { 
      linea[0] = Convert.ToString(idx); // (2) 
      switch(OrdenListas[idx]){ 
       case 0: linea[1] = "Crescente"; break; 
       case 1: linea[1] = "Decrescente"; break; 
       case 2: linea[1] = "Aleatorio"; break; 
       default: linea[1] = "No especificado" ; break; 
      } 
      linea[2] = Convert.ToString(LongitudListas[idx]); 
     } 
    } 

我已經看到了參考「編譯器錯誤如果使用一個變量,但它可能不會初始化,而據我看到變量的String [](索引:0,1,2)。在每個inizialized除了numlistas = 0的情況下(numlistas是一類參數和它的值被認爲是> = 1)

我還試圖改變線(1)和(2):

(1) List<string> linea; 

(2) linea.Add(Convert.ToString(idx)); 

但同樣的錯誤(當我試圖改變行(1)和(2)時,我把所有以下行註釋爲:

預先感謝您爲每個幫助

+0

你介意標誌着答案之一是接受呢? – 2012-03-04 15:50:42

回答

2

您聲明型string[](字符串數組)的一個變量,但你沒有指定它一個值。換句話說,當您使用它時,linea變量尚未初始化。

你的線(1)需要的樣子:

string [] linea = new string[numListas]; 
1

問題是你聲明的變量string[] linea但你從來沒有for循環體中使用它之前,它初始化爲一個特定的值。根據你想在循環中使用它有3個元素,因此下面的工作

string[] linea = new string[3]; 
1

改成這樣:

public void llenarTabla() 
    { 

     int idx; 
     List<string> linea=new List<string>(); 
     for (idx = 0; idx < numListas; idx++) 
     { 
      linea.Add(Convert.ToString(idx)); // (2) 
      switch(OrdenListas[idx]){ 
       case 0: linea.Add("Crescente"); break; 
       case 1:linea.Add("Decrescente"); break; 
       case 2: linea.Add("Aleatorio"); break; 
       default:linea.Add("No especificado"); break; 
      } 
      linea.Add(Convert.ToString(LongitudListas[idx])); 
     } 
    } 
相關問題