编译错误:无法将int隐式转换为bool

时间:2014-01-15 15:18:35

标签: c#

错误发生在for循环

List<string> computers = Global.getAllComputers(Environment.UserDomainName);
            computers.Sort();


            if (dataGridView1.Rows.Count == 1)
            {
                foreach (var s in computers)
                    dataGridView1.Rows.Add(s);
            }
            else
            {
                foreach (string s in computers)
                {
                    for (int i = 0; (dataGridView1.Rows.Count - 1); i++)
                    {
                        if (s.ToUpper() == dataGridView1.Rows[i].Cells[0].Value.ToString().ToUpper())
                            continue;
                        else
                            dataGridView1.Rows.Add(s);
                    }
                }
            }

2 个答案:

答案 0 :(得分:2)

此行不包含for语法所需的布尔表达式,将其更改为

 for (int i = 0; i < dataGridView1.Rows.Count; i++)

如果没有在for循环的评估部分中找到布尔条件,编译器会抱怨你正在尝试使用整数(Rows.Count)而不是预期的布尔值。

The For loop C# reference

  1. 使变量i的初始值保持稳定。
  2. 评估条件(i&lt; dataGridView1.Rows.Count),. i的值与datagrid中的行数进行比较。如果i 小于Rows.Count,条件计算结果为true,并且 执行for循环的主体,否则退出循环
  3. 将i的值增加1。
  4. 返回步骤2再次评估条件。

答案 1 :(得分:2)

使用

 for (int i = 0; dataGridView1.Rows.Count > i; i++)

而不是

 for (int i = 0; (dataGridView1.Rows.Count - 1); i++)