我在尝试检查某个给定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]。
答案 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
}