2017-03-04 38 views
2

我的代码:C#阵列不要在工作循环

DataTable dt = fs.DataTable; 
int columnsNumber = dt.Columns.Count; 
string[] array = new string[columnsNumber]; 

for (int k=0; k==columnsNumber; k++) 
{ 
    array[k] = dt.Columns[k].ColumnName; 
} 


foreach (var item in array) 
{ 
    MessageBox.Show(item); 
} 

的MessageBox已经显示空白消息。

如果我已经运行此代码,没问题;

array[1] = dt.Columns[1].ColumnName; 
array[2] = dt.Columns[2].ColumnName; 
array[3] = dt.Columns[3].ColumnName; 

这项工作。问题是什么 ?

回答

1

你也可以用这种方式

var listToArray = new listToArray<string>(); 
foreach (DataColumn dataCol in dt.Columns) 
    listToArray.Add(dataCol.ColumnName); 
listToArray.ToArray(); 

希望它能帮助。

2

你cicle只是检查满足K == kolonSayisi

for (int k=0; k==kolonSayisi; k++) 
{ 
    array[k] = dt.Columns[k].ColumnName; 
} 

我觉得你应该这样写:

for (int k=0; k < columnsNumber; k++) 
{ 
    array[k] = dt.Columns[k].ColumnName; 
} 
2

您已经for loop包括一个==算哪里,你应该使用<

更改

for (int k=0; k==kolonSayisi; k++) 

for (int k=0; k<kolonSayisi; k++) 
0

你可以使用这样的:

 DataTable table = new DataTable(); 

     table.Columns.Add("col1"); 
     table.Columns.Add("col2"); 
     table.Columns.Add("col3"); 

     var array = table.Columns 
      .Cast<DataColumn>() 
      .Select(c => c.ColumnName) 
      .ToArray(); 

     foreach(var item in array) 
     { 
      MessageBox.Show(item); 
     } 
0

for循环的工作方式如下:

在括号中的第一部分定义计数或增量变量并设置起始值。第二部分是取消条件。你可以像这样读取它:如果条件为false,则停止循环。第三部分定义了步长,如何增加变量。

现在,如果你看看你的条件k==columnsNumber你试图检查k是否等于数字。在k为0的第一次迭代中,如果columnsNumber不为0,它将返回false。因此,你的循环将停止。