Невозможно преобразовать тип 'string' в 'System.Collections.Generic.IList <string> - PullRequest
0 голосов
/ 08 июня 2011

Я получаю эту ошибку:

"Невозможно преобразовать тип 'string' в 'System.Collections.Generic.IList"

Вот моя программа:

class Program
{


    static void Main(string[] args)
    {


        List<string> list = new List<string>(); 
        list.Add("a");
        list.Add("b");
        list.Add("c");
        list.Add("d");



        foreach (IList<string> name in list ) 
        {
            Console.WriteLine(String.Format("{{{0} {1} {2}}}", list[0], list[1], list[2]));

Ответы [ 6 ]

4 голосов
/ 08 июня 2011

У вас есть список, и к этому списку вы добавили 4 строки. Список представляет собой список строк, а не список строк.

Я подозреваю, что вы имеете в виду (поскольку вы делаете что-то с .Format)

List<string> list = new List<string>(); 
// 4 x Add
Console.WriteLine(String.Format("{{{0} {1} {2}}}", list.ToArray()));

в качестве альтернативы, если вы имеете в виду первые 3 символа в каждом (которые НЕ БУДУТ РАБОТАТЬ для ваших образцов данных, поскольку каждый из них представляет собой строку длиной 1):

foreach(string name in list) {
    Console.WriteLine(
        string.Format("{{{0} {1} {2}}}", name[0], name[1], name[2]));
}
2 голосов
/ 08 июня 2011

Измените foreach (IList<string> name in list ) на foreach (string name in list )

Первый токен в объявлении foreach - это тип элементов коллекции, которую вы перечисляете.

Вы также можете использовать *Ключевое слово 1007 *, чтобы компилятор мог определить тип во время компиляции (при этом получая преимущества статической типизации переменной name): foreach (var name in list)

1 голос
/ 08 июня 2011

в каждом цикле удалить IList<String> и использовать String

 foreach(String name in list)
 {
    Console.WriteLine(String.Format("{{{0} {1} {2}}}", list[0], list[1], list[2]));
 }
0 голосов
/ 08 июня 2011

Ваша проблема в том, что list содержит strings, а не IList<string>

. Или измените цикл for на:

foreach (string name in list ) 
    {
        Console.WriteLine(name);
    }

или потеряйте foreach и просто оставьтеConsole.Writeline там

0 голосов
/ 08 июня 2011

Должны ли вы делать это?

foreach (string name in list )
0 голосов
/ 08 июня 2011

Измени свой цикл

foreach(string name in list)
{
    Console.WriteLine(name);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...