我很难记住如何(但不记得为什么)使用IEnumerator在C#中。我已经习惯了Java及其出色的文档,可以很好地向初学者解释所有内容。所以,请耐心等待。我尝试从这些板上的其他答案中学习但无济于事。与其问一个之前已经问过的一般性问题,我有一个具体的例子可以为我澄清一些事情。假设我有一个方法需要传递IEnumerable目的。该方法需要做的就是连接字母roxxors到每个String的结尾在迭代器中。然后它将返回这个新的迭代器(当然原始的IEnumerable对象保持原样)。我该怎么做?当然,除了我之外,这里的答案应该可以帮助许多人解决有关这些对象的基本问题。
我很难记住如何(但不记得为什么)使用IEnumerator在C#中。我已经习惯了Java及其出色的文档,可以很好地向初学者解释所有内容。所以,请耐心等待。我尝试从这些板上的其他答案中学习但无济于事。与其问一个之前已经问过的一般性问题,我有一个具体的例子可以为我澄清一些事情。假设我有一个方法需要传递IEnumerable目的。该方法需要做的就是连接字母roxxors到每个String的结尾在迭代器中。然后它将返回这个新的迭代器(当然原始的IEnumerable对象保持原样)。我该怎么做?当然,除了我之外,这里的答案应该可以帮助许多人解决有关这些对象的基本问题。
这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:CananyoneexplainIEnumerableandIEnumeratortome?IEnumerator和IEnumerable有什么区别?
这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:CananyoneexplainIEnumerableandIEnumeratortome?IEnumerator和IEnumerable有什么区别?
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion谁能给我解释一下IEnumerable和IEnumerator?例如,什么时候在foreach上使用它?IEnumerable和IEnumerator有什么区别?为什么我们需要使用它?
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion谁能给我解释一下IEnumerable和IEnumerator?例如,什么时候在foreach上使用它?IEnumerable和IEnumerator有什么区别?为什么我们需要使用它?
如果我使用yield而不是手动创建IEnumerator,是否可以实现IEnumerator.Reset? 最佳答案 不,这是不可能的。当C#编译器处理迭代器(一种包含yield语句的方法)时,编译器会生成一个实现IEnumerable和IEnumerator的类。生成类的Reset实现仅抛出NotSupportedException。在当前版本的C#中无法影响这一点。相反,您的调用代码将需要请求一个新的枚举器,即开始一个新的foreach循环。或者您将需要放弃语言支持(yield语句)并编写您自己的实现IEnumerator的类。
免责声明:我了解IEnumerable之间的区别和IEnumerator以及如何使用两者。这不是this的副本或this.这更像是一个设计问题-因为IEnumerator已经封装了关于可以枚举的事物的所有必要信息(.Current,.MoveNext()),那么引入一个类型(IEnumerable)的唯一目的是返回前者的实例的意义何在?具体来说:为什么不能foreach被设计为直接遍历IEnumerator,像这样://foreach(vareinanEnumerator){//...}while(anEnumerator.MoveNext()){doSomething(anEnume
背景:我有一堆从数据库中获取的字符串,我想返回它们。传统上,它会是这样的:publicListGetStuff(stringconnectionString){ListcategoryList=newList();using(SqlConnectionsqlConnection=newSqlConnection(connectionString)){stringcommandText="GetStuff";using(SqlCommandsqlCommand=newSqlCommand(commandText,sqlConnection)){sqlCommand.CommandType
有没有内置的方法来转换IEnumerator至IEnumerable? 最佳答案 我能想到的最简单的转换方式是通过yield语句publicstaticIEnumerableToIEnumerable(thisIEnumeratorenumerator){while(enumerator.MoveNext()){yieldreturnenumerator.Current;}}与列表版本相比,这具有在返回IEnumerable之前不枚举整个列表的优点。使用yield语句你只会迭代你需要的项目,而使用列表版本,你会首先迭代列表中的所有项