Мне очень нравится быть в состоянии сделать это в C#:Сильно типизированный метод интерфейса возврата, используя выход
IEnumerable GetThePizzas()
{
yield return new NewYorkStylePizza();
yield return new SicilianPizza();
yield return new GreekPizza();
yield return new ChicagoStylePizza();
yield return new HawaiianPizza();
}
В то время как в Java я бы сделал это так:
Collection<Pizza> getThePizzas()
{
ArrayList<Pizza> pizzas = new ArrayList<Pizza>();
pizzas.add(new NewYorkStylePizza());
pizzas.add(new SicilianPizza());
pizzas.add(new GreekPizza());
pizzas.add(new ChicagoStylePizza());
pizzas.add(new HawaiianPizza());
return pizzas;
}
Обратите внимание, что код Java указывает тип возвращаемого экземпляра (экземпляры Pizza). Код C# этого не делает. Это меня беспокоит, особенно в ситуациях, когда другие программисты не имеют доступа к исходному коду. Есть ли способ исправить это?
Обновление: Моя проблема заключалась в том, что я использовал «System.Collections» вместо «System.Collections.Generic», и поэтому использовал неоригинальную версию IEnumerable.
коллекции в пространстве имен System.Collections являются несколько устаревшими. Используйте общие коллекции из пространства имен System.Collections.Generic, если у вас нет веских оснований использовать старые, не общие коллекции. Все модные вещи в C# /. NET, такие как LINQ, построены вокруг общего интерфейса IEnumerable. –
dtb
Я вижу ... Я просто не использовал инструкцию для System.Collections.Generic. Вот почему он не работал. – asmo
-1 для не включая MexicanHeatwavePizza, но +2 для хорошего вопроса;) – Andy