7
我真的很喜欢,能够做到这一点在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
2010-08-22 16:00:21
我看到...我只是缺少System.Collections.Generic的使用说明。这就是为什么它不起作用。 – asmo 2010-08-22 16:07:05
-1不包括MexicanHeatwavePizza,但是+2表示一个不错的问题;) – Andy 2010-08-22 16:11:10