2017-03-04 36 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。因此,你的循環將停止。