【问题标题】:C# Array Don't Work at for loopC# 数组不适用于 for 循环
【发布时间】:2017-03-04 18:10:21
【问题描述】:

我的代码:

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;

这项工作。有什么问题?

【问题讨论】:

    标签: c# arrays loops for-loop


    【解决方案1】:

    您在 for loop 中包含了一个 == 运算符,您应该在其中使用 <

    改变

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

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

    【讨论】:

      【解决方案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;
      }
      

      【讨论】:

        【解决方案3】:

        你也可以这样用

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

        希望对你有帮助。

        【讨论】:

          【解决方案4】:

          for 循环的工作方式如下:

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

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

          【讨论】:

            【解决方案5】:

            你可以这样使用:

                   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);
                    }
            

            【讨论】:

              猜你喜欢
              • 2018-03-13
              • 1970-01-01
              • 1970-01-01
              • 2014-01-29
              • 2014-12-27
              • 1970-01-01
              • 2014-12-13
              • 1970-01-01
              • 2013-09-01
              相关资源
              最近更新 更多