【发布时间】:2011-10-10 15:02:37
【问题描述】:
我们称这样的实例为“集合”吗?一个“可数”?或者是其他东西?我的两个主要目标是:
- 供其他开发人员理解,无需解释该类实现了
IEnumerable。 - 技术上正确且准确。
【问题讨论】:
-
+1 从来没想过 ;)
标签: c# .net collections terminology ienumerable
我们称这样的实例为“集合”吗?一个“可数”?或者是其他东西?我的两个主要目标是:
IEnumerable。【问题讨论】:
标签: c# .net collections terminology ienumerable
我建议“枚举”。
这在技术上意味着枚举的结果,但这通常是 IEnumerable 接口的感知方式。
史蒂夫
【讨论】:
ObservableCollection 类称它为“集合”。
//
// Summary:
// Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection<T>
// class that contains elements copied from the specified collection.
//
// Parameters:
// collection:
// The collection from which the elements are copied.
//
// Exceptions:
// System.ArgumentNullException:
// The collection parameter cannot be null.
public ObservableCollection(IEnumerable<T> collection);
【讨论】:
我同意那些建议“enumeratorenumerable”的人,但如果你想要别的东西,术语“sequence”也可以。
【讨论】:
System.Linq.Enumerable 静态类最初也称为Sequence。
用“一个 IEnumerable”来调用它是完全合适的。这表明该类实现了 IEnumerable,并且简洁而准确。
从面向对象的角度来看,这个类是 IEnumerable,所以再次证明这是合理的。
【讨论】:
难点在于IEnumerable和“enumerable”这个词不是名词。你说"something is enumerable",而不是"something is an enumerable"。换句话说,可枚举的对象是您对对象所做的事情,而不是对象本身的定义。
MSDN 将其描述为:
IEnumerable - 公开枚举器,它支持对指定类型的集合进行简单迭代。
准确地说,在记录时我会使用:
“List
是 System.Int32 值的可枚举集合。”
【讨论】:
我通常只是说“我有这个 IEnumerable...”,这在工作和 SO 中似乎已经足够了。它清楚地表明我在谈论一个实现 IEnumerable 的类。
【讨论】:
从技术上讲,我会通知开发人员它实现了 IEnumerable。
说其他的东西信息量少。
任何了解 IEnumerable 的人都会立即了解您的班级的能力。任何不知道的人,无论你描述的是什么,都不会得到它。
【讨论】:
虽然大多数实现IEnumerable 的类都是集合,但没有具体的术语。一个值得注意的例外是String,但它可以看作是字符的集合...
【讨论】:
没有,所以我会使用“可枚举类型”这个短语。
集合是包含有限数量的项目的东西。可枚举类型不一定是集合,因为它可以是无限列表。
列表是具有明确顺序的集合。
【讨论】:
enum 类型混淆,所以我尽量避免。
一个“可枚举的”?
这是一个被广泛接受的答案;我建议不要将其称为集合,因为这可能意味着该对象实现了ICollection 或ICollection<T>。
【讨论】:
IEnumerable 甚至不能是一个集合,尤其是考虑到 yield 关键字。