我有时会发现自己在提及IEnumerable<Foo>
时想到要使用什么单词。我不认为在阅读时我会看到一致的命名。你叫什么IEnumerable <Foo>?
IEnumerable<Foo>
:这是一个类型名称。思考或在句子中使用时没有帮助。
收藏:这是有效的,但不是到处被使用。虽然我们有System.Collections命名空间。
序列:这是太有效,可能更好定义。
枚举器或迭代器:他们强调操作,很少使用。
什么是最合适的?你在代码中读到了什么?
我有时会发现自己在提及IEnumerable<Foo>
时想到要使用什么单词。我不认为在阅读时我会看到一致的命名。你叫什么IEnumerable <Foo>?
IEnumerable<Foo>
:这是一个类型名称。思考或在句子中使用时没有帮助。
收藏:这是有效的,但不是到处被使用。虽然我们有System.Collections命名空间。
序列:这是太有效,可能更好定义。
枚举器或迭代器:他们强调操作,很少使用。
什么是最合适的?你在代码中读到了什么?
一个IEnumerable<Foo>
是不迭代器/枚举 - 也就是所述设备的独立的概念,迭代它。
A 集合通常是指允许诸如添加/去除等操作的特定设备;这在这里不适用,但这个术语不是不合理的。我个人倾向于在讨论中使用“序列”,但我没有用它来命名代码中的东西 - 我只是使用序列代表的东西,即“orders”,“uniqueUsers”等 - 或者在通用方法的情况下,“项目”,“价值观”等
另请参见[关于IEnumerable和IEnumerator的问题](http://stackoverflow.com/questions/4548464/question-regarding-ienumerable-and-ienumerator/4550191#4550191)。 – Brian
我肯定对序列倾斜。在我看来,一个收集是有限的,一个IEnumerable<Foo>
很可能代表了在飞行中产生的值的序列,因此它可能代表值的无限序列。
序列不错,但并非所有序列都实现了任何形式的IEnumerable。 “可重复使用的序列”将是我的首选英文 - ish描述;一些可重复使用的序列没有实现IEnumerable实现,但由于大多数没有实现IEnumerable的序列是不可重用的,我认为“可重用”是一个有用的形容词。 – supercat
有用于参照它写为“富的IEnumerable”的先例。例如,this MSDN page引用“XElement的IEnumerable”。
Verbally我会说“一个IEnumerable of Foo”或者“一个Enumerable of Foo”。
到目前为止,最清晰和最明确的方式来描述“(中富)的IEnumerable”的变量,参数,或类型的字段“的IEnumerable <富>”是称之为一个“的IEnumerable <FOO>”,或者“IEnumerable of foo”。作为一名VB程序员,我更喜欢中间语法,尤其是因为它不使用可能被误认为是HTML标记的标点符号;在说话时,除了涉及嵌套泛型的情况外,后一种形式将是最自然的发音(最初的“I”代表它自己的音节),当需要其他发音提示来指示精确的嵌套时。
其中一些实现通用或者非通用(*)的IEnumerable接口的集合类的,但有些不是。有些是迭代器;有些不是。因此,除非知道特定的IEnumerable实际上是一个集合或迭代器,否则术语“集合”和“迭代器”是不适合的。术语“迭代器”有一个额外的问题,由术语“序列”共享:并非所有的迭代器或序列都实现IEnumerable;有些实现IEnumerator,有些实现GetEnumerator方法,但不实现IEnumerable(例如,因为他们希望允许“foreach”,但不希望承诺IEnumerable暗示的所有行为)。如果有人希望避免行话,那么术语“可重复使用的序列”可能是好的。它并不是很明确,因为它可能会引用具有GetEnumerator方法的类,但不会实现IEnumerable,或者可能引用其Reset方法实际重置枚举的IEnumerator对象,但不包括一次性迭代器。 (*)从这里开始,术语“IEnumerable”将互换地引用IEnumerable和IEnumerable <T>。同样“IEnumerator”。
在句子(代码)中使用它。
IEnumerable<Foo> myFoos = GetFoos();
//internal vocalization: get some Foos, assign them to myFoos
我怀疑大多数程序员不会在变量声明/赋值语句中内部发声。
public IEnumerable<Foo> ProcessFoos(IEnumerable<Foo> source)
//internal vocalization: The method requires some foos and returns some foos.
我想我使用“一些”作为我的内部发声。可能任何复数形式的词都有效。批量,大块,束,群,过度等
我主要是指**集合** :) – Samich
标记CW每个OP的请求 –
我通常指的是一个Enumerable of Foo :-)所以一个序列。 – xanatos