Мне действительно приятно иметь возможность делать это в 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.