2012-02-19 48 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])); 
     } 
    } 
相关问题