Почему мне нужно преобразовать список в IEnumerable, если список уже повторяется? [закрыто]

У меня была такая же проблема. На моей раскадровке у меня была кнопка без изображения.

Тогда я бы присвоил изображение в коде.

Пришел IOS 7, и у меня появилось много синих изображений.

Разрешение было простым, но сбивающим с толку. Если я назначаю любое изображение в раскадровке, а затем меняю изображение во время выполнения, он отлично работает.

Вы всегда должны указывать начальный образ на раскадровке, даже если вы не собираетесь его использовать.

-4
задан Scott Hannen 11 April 2019 в 22:34
поделиться

2 ответа

A List<T> является и IEnumerable<T>. Как и массив, так же, как и множество других классов. Когда мы говорим, что это IEnumerable<T>, мы имеем в виду, что он реализует этот интерфейс.

Так что, если у меня есть этот метод:

void PrintStringsToConsole(IEnumerable<string> strings)
{
    foreach(var s in strings)
    {
        Console.WriteLine(s);
    }
}

Любой из них будет работать. Вам не нужно ничего конвертировать.

var stringArray = new string[] {"a", "b", "c"};
PrintStringsToConsole(stringArray);

var stringList = new List<string> {"x", "y", "z"};
PrintStringsToConsole(stringList);

var hashSet = new HashSet<string> {"a","b","c"};
PrintStringsToConsole(hashSet);

var filteredList = stringList.Where(s => s != "a"); 
PrintStringsToConsole(filteredList);
0
ответ дан Scott Hannen 11 April 2019 в 22:34
поделиться

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

0
ответ дан Chris 11 April 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: