Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 您称之为IEnumerable<;Foo>;?_.net_Linq_Ienumerable_Ienumerator - Fatal编程技术网

.net 您称之为IEnumerable<;Foo>;?

.net 您称之为IEnumerable<;Foo>;?,.net,linq,ienumerable,ienumerator,.net,Linq,Ienumerable,Ienumerator,有时我发现自己在引用IEnumerable时会考虑使用哪个词。我认为我在阅读时没有看到一致的命名 IEnumerable:它是一个类型名。在一个句子中思考或使用它是没有帮助的 收藏:它有效,但不适用于任何地方。尽管我们有System.Collections命名空间 序列:它也是有效的,可能定义得更好 枚举数或迭代器:它们强调运算,很少使用 什么是最合适的?你在代码中读到了什么?我绝对倾向于顺序。在我看来,一个集合是有限的,IEnumerable很可能代表一个动态生成的值序列,因此它可能代表一个无

有时我发现自己在引用
IEnumerable
时会考虑使用哪个词。我认为我在阅读时没有看到一致的命名

IEnumerable
:它是一个类型名。在一个句子中思考或使用它是没有帮助的

收藏:它有效,但不适用于任何地方。尽管我们有System.Collections命名空间

序列:它也是有效的,可能定义得更好

枚举数迭代器:它们强调运算,很少使用

什么是最合适的?你在代码中读到了什么?

我绝对倾向于顺序。在我看来,一个集合是有限的,
IEnumerable
很可能代表一个动态生成的值序列,因此它可能代表一个无限的值序列。一个
IEnumerable
而不是迭代器/枚举器-这是迭代它的设备的一个单独概念

集合通常指允许添加/删除等操作的特定设备;这一点在这里并不适用,但这一术语并非不合理


就个人而言,我倾向于在讨论中使用“序列”,但我不会在代码中使用“序列”来命名事物——我只会使用序列所代表的事物,即“订单”、“唯一用户”等——或者在通用方法的情况下,“项”、“值”等。

有一个在书面上将其称为“Foo的IEnumerable”的先例。例如,引用“XElement的IEnumerable”


口头上我会说“一个IEnumerable of Foo”或“一个Enumerable of Foo”。

到目前为止,描述“IEnumerable”类型的变量、参数或字段最清晰、最明确的方式是将其称为“IEnumerable”、“IEnumerable(of Foo)”或“IEnumerable of Foo”。作为一名VB程序员,我更喜欢中间语法,尤其是因为它不使用可能被误认为HTML标记的标点符号;换句话说,后一种形式将是最自然的发音(首字母“I”代表它自己的音节),除非在涉及嵌套泛型的情况下,可能需要其他发音提示来指示精确的嵌套

实现泛型或非泛型(*)IEnumerable接口的一些类是集合,但有些不是。有些是迭代器;有些则不然。因此,术语“集合”和“迭代器”并不真正合适,除非知道某个特定的IEnumerable实际上是集合或迭代器。术语“迭代器”还有一个与术语“序列”相同的问题:并非所有迭代器或序列都实现IEnumerable;有些实现IEnumerator,有些实现GetEnumerator方法但不实现IEnumerable(例如,因为他们希望允许“foreach”,但不希望承诺IEnumerable隐含的所有行为)。如果希望避免使用行话,术语“可重用序列”可能是个不错的选择。它不是很明确,因为它可能引用具有GetEnumerator方法但未实现IEnumerable的类,或者可能引用IEnumerator对象,其重置方法实际重置枚举,但它排除一次性使用迭代器

(*)从这里开始,“IEnumerable”一词将交替指IEnumerable和IEnumerable。同样,“IEnumerator”。

在句子(代码)中使用它

IEnumerable myFoos=GetFoos();
//内部发声:得到一些食物,分配给我的食物
我怀疑大多数程序员不会在变量声明/赋值中对类型进行内部发声

public IEnumerable<Foo> ProcessFoos(IEnumerable<Foo> source)
  //internal vocalization: The method requires some foos and returns some foos.
public IEnumerable ProcessFoos(IEnumerable源代码)
//内部发声:该方法需要一些foo并返回一些foo。

我想我用“some”作为我的内部发声。可能任何复数形式的单词都可以。批、块、束、群、过多等等。

我主要指的是集合:)我通常指的是可枚举的Foo:-)所以序列。序列不错,但不是所有序列都实现任何形式的IEnumerable。“可重复使用序列”将是我首选的英文描述;一些可重用序列没有实现IEnumerable,但是由于大多数没有实现IEnumerable的序列是不可重用的,我认为“可重用”是一个有用的形容词。另请参阅。
public IEnumerable<Foo> ProcessFoos(IEnumerable<Foo> source)
  //internal vocalization: The method requires some foos and returns some foos.