C#未分配的局部变量错误 - 尝试了几种解决方案

时间:2013-06-25 22:41:48

标签: c#

我在尝试检查某个给定XML标记的实例是否在先前正在读取的XML文件中出现时收到此错误,因此,它是否应该在我创建的数据表中获得自己的列。为简化起见,我创建了一个字符串的占位符数组,它将存储列名,我想检查XMLReader是否读取了具有相同名称的标记:

// initializing dummy columns
string[] columns;

// check if it is a first time occurance of this tag
for(int n = 0; n < totalcolumns; n++)
{
     if (reader.Name == columns[n])
     {
           columnposition = n;
           break;
     }
     else if(totalcolumns == columntracker+1)
     {
           // just adding it to the record-keeping array of tables
           columns[n] = reader.Name;
           column.ColumnName = "reader.Name";
           dt.Columns.Add(column);
           columnposition = n;
     }

     columntracker++;
}

我应该注意,for循环发生在switch语句中,它只是检查XML节点类型。此外,我尝试进行切换,但它不允许具有可变的大小写,即在case声明中使用columns [n]。

2 个答案:

答案 0 :(得分:2)

如果您要将columns初始化为totalcolumns string的数组,它看起来像这样:

string[] columns = new string[totalcolumns];

答案 1 :(得分:0)

虽然minitech的答案解决了未初始化变量的问题,但我会使用List而不是字符串数组。使用List.FindIndex代码变得更简单,而不是遍历字符串数组。

        List<String> columns = new List<string>();
        columnposition = columns.FindIndex (s => string.Equals(s, reader.Name);
        if (columnposition < 0)
        {
            columns.Add ( reader.Name);
            columnposition = columns .Count -1;
            // .. do the other stuff 
        }