0

例如,返回Task对象的方法以“Async”为后缀。或者使用的方法IAsyncResult以“Begin”和“End”为前缀。

返回的方法有什么约定IEnumerable<T>吗?感觉应该有,但我没有在 .NET 库中看到任何迭代器方法。

如果答案是“否”,请随意提出一些建议作为答案的一部分。

4

2 回答 2

2

我在 .NET 库中没有看到任何迭代器方法

有很多,只是您还没有将它们识别为迭代器。这是一个很好的设计,它不应该是显而易见的。其中很多都有一个明显的名字:GetEnumerator()。适用于任何充当集合的类,它实现了 IEnumerable<>,因此您甚至看不到名称,因为您用于for each在客户端代码中进行迭代。

Linq 扩展方法值得注意,它们都是迭代器。这里的命名约定是根据他们执行的操作来选择他们的名字。就像 Select() 和 Where() 一样,你肯定知道它们。这是基于它们的操作到众所周知的 SQL 关键字的自然映射。怀疑在你自己的程序中有类似的东西。

然后有一堆名为 GetXxxs() 的它们,其中 Xxxs 是它们返回的元素名称的复数。

因此,如果类适合实现 IEnumerable<>,请首先考虑 GetEnumerator()。然后选择 GetXxxs() 接下来。如果你真的想明确它是一个迭代器,那么你可以使用 EnumerateXxx()。

于 2013-10-15T11:56:41.837 回答
0

没有约定。甚至不确定返回 IEnumerable 的东西实际上是在使用 yield return 进行迭代,或者只是返回一个已经存在的实现 IEnumerable 的集合。我也不想要一个额外的命名方案。

于 2013-10-15T08:47:14.837 回答