【问题标题】: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);
}