Мне действительно приятно иметь возможность делать это в 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.
Используя общую версию IEnumerable, IEnumerable
IEnumerable<Pizza> GetThePizzas()
{
yield return new NewYorkStylePizza();
yield return new SicilianPizza();
yield return new GreekPizza();
yield return new ChicagoStylePizza();
yield return new HawaiianPizza();
}