Int to string:无法从’method group’转换为’string’

我的表单上有一个listView。 我希望在程序运行时添加内容。

这是我使用的代码

public void FillList(string[] Name,int[] empty,int[] Population,int[] Max,int[] Check,int size) { if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate { for (int i = 0; i < size; i++) { ListViewItem item = new ListViewItem(Name[i]); item.SubItems.Add(empty[i].ToString); //error item.SubItems.Add(Population[i].ToString); //error item.SubItems.Add(Max[i].ToString); //error if (Check != 1) item.SubItems.Add("No"); else item.SubItems.Add("Yes"); listView1.Items.Add(item); } }); } } 

参数必须是字符串,我试过.ToString ,但我明白了:

参数’1’:无法从’方法组’转换为’字符串’

您缺少方法调用的括号:

 ToString () 

如果没有括号,表达式就是一个方法组 – 即对一个或多个重载方法的引用。

你忘记了括号。

它应该是.ToString()

John这是偏离主题的,但您是否考虑过使用此方法传递由要添加的每个子项组成的类。 所以:

 class ListItem { public string Name {get; set;} public int Empty {get; set;} public int Population {get; set;} public int Max {get; set;} public bool Checked {get; set;} } 

这样你就需要将数组中的每个项目排成一行。 尝试在许多arrays中排列项目通常会使界面难以使用。 你的方法看起来像

 FillList(IList listItems) { if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate { foreach (ListItem listItem in listItems) { ListViewItem item = new ListViewItem(listItem .Name); item.SubItems.Add(listItem.Empty.ToString()); item.SubItems.Add(listItem.Population.ToString()); item.SubItems.Add(listItem.Max.ToString()); item.SubItems.Add(listItem.Checked ? "No" : "Yes"); listView1.Items.Add(item); } } } } 

我刚刚编写了这段代码,因此可能需要进行一些代码清理