Int в строку: невозможно преобразовать из 'группы методов' в 'строку'

У меня есть 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': невозможно преобразовать из 'группы методов' в 'строку'


person Ivan Prodanov    schedule 08.04.2009    source источник
comment
Джон, это не по теме, но рассматривали ли вы с помощью этого метода передачу класса, состоящего из каждого из добавляемых подпунктов. Я добавил подробности в ответе ниже   -  person Jiminy    schedule 20.04.2009
comment
Глупая близкая причина. Это помогло мне в совершенно другом контексте, так как ошибка группы методов довольно запутанная и основная причина этой ошибки, а не что-то более конкретное для точных деталей вопроса.   -  person Jaloopa    schedule 28.05.2019
comment
@Jaloopa Полностью согласен; типичный Stack Overflow и его чрезмерная модерация. Это легко пропустить обычным программистам или начинающим программистам на C #. Единственная разница между этим закрытием и многими другими заключается в том, что другие довольно часто получают сотни голосов за ответ вместо 78.   -  person Alan K    schedule 02.01.2020


Ответы (3)


Вам не хватает скобок при вызове метода:

ToString()

Без круглых скобок выражение представляет собой группу методов, то есть ссылку на один или несколько перегруженных методов.

person Konrad Rudolph    schedule 08.04.2009

Вы забыли скобки.

Это должно быть .ToString()

person Rik    schedule 08.04.2009

Джон, это не по теме, но рассматривали ли вы с помощью этого метода передачу класса, состоящего из каждого из добавляемых подпунктов. Так:

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

Таким образом, вам нужно будет выровнять каждый из элементов переданных массивов. Попытки выстроить элементы во многих массивах часто затрудняют использование интерфейсов. Ваш метод будет выглядеть так

FillList(IList<ListItem> 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);
            }
        }
    }
}

Я только что написал этот код, так что может потребоваться некоторая очистка кода.

person Jiminy    schedule 20.04.2009