C#中的协同函数怎么用

问题描述

IEnumerable和IEnumerator的区别,还有怎么用?请大师赐教??????

解决方案

解决方案二:
这次手动帮你移到C#,下次一律移到其他语言
解决方案三:
IEnumerable和IEnumerator的区别IEnumerable提供了一个接口方法,就是GetEnumerator()函数,主要是返回IEnumerator对象的!IEnumerator提供了current,movenext等遍历方法,这样foreach这样的语句,才可以支持的!我的理解,微软为什么这么设计,主要的目的是提供了方法和执行对象的分离!因为IEnumerator这个对象,是可以有很多继承对象的,如果直接反馈IEnumerator对象,这样就缺少了灵活的控制!所谓微软设计了两个接口实现该功能!至于怎么用的话,其实也比较简单了,就是如果你的对象,希望使用foreach语句,那么就继承IEnumerable,如果遍历比较特殊的化,就要继承IEnumerator才行!
解决方案四:

解决方案五:
它们之间的关系,就好象汽车和驾驶员,规定每一辆汽车必须有一位“有证驾驶员”才能上路。IEnumerable是“可枚举的对象(类)”的接口,而这类对象内部必须有一个IEnumerator类型的函数负责提供.net系统查验和调用。
解决方案六:
Enumerable枚举,IEnumerable可访问指定的成员。被访问的成员是必须需存在的Enumerator枚举器,IEnumerator可用foreach遍历所有成员。因此你不必保证成员一定存在
解决方案七:
引用楼主Brave_Duan的回复:

IEnumerable和IEnumerator的区别,还有怎么用?请大师赐教??????

讲解的很详细↑
解决方案八:
IEnumrable定义得比较粗糙、简单,甚至根本不需要它(),这是有历史原因的。不必在这里太计较其形式上是不是“取名不易记忆、概念不够明确”等等,你就把他们的完全不相同的功能分别走通就行了。
解决方案九:
foreachwhile(xxx.MoveNext())这两个的区别

时间: 2024-09-30 01:38:07

C#中的协同函数怎么用的相关文章

举例详解Lua中的协同程序编程

这篇文章主要介绍了Lua中的协同程序编程,是Lua入门学习中的基础知识,需要的朋友可以参考下 协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行.随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要求暂停. 上述定义可能看起来模糊.来告诉它更清楚,假设我们有两个方法,一个主程序方法和协同程序.当我们使用恢复功能调用协程,其开始执行,当我们调用yield功能,暂停执行.再次同协程可以继续从它被暂停的另一个恢复功能调用执行.这个过程可以继续,直

Lua中的协同程序 coroutine(转)

Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换.不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时刻只能有一个协程在运行.并且Lua中的协程无法在外部将其停止,而且有可能导致程序阻塞.   协同程序(Coroutine): 三个状态:suspended(挂起,协同刚创建完成时或者yield之后).running(运行).dead(函数走完后的状态,这时候不能再重新resume). corouti

Lua中的协同程序详解_Lua

前言 协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西.从概念上讲,线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行.就是说,一个具有多个协同程序的程序在任意时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显式地要求挂起时,它的执行才会暂停. 协同程序基础 Lua将所有关于协同程序的函数放置在一个名为"coroutine"的table中.函数c

c++问题-C++的类中怎么在一个函数中引用上一层的函数

问题描述 C++的类中怎么在一个函数中引用上一层的函数 在同一个类中怎么引用先定义的函数来定义函数?比如在一个时期类的定义中,一个日期加1的函数中怎么调用先定义的一个求是否闰年的函数. 解决方案 C++定义隐式转换函数将类转换为内部的一个成员变量c++函数默认参数是一个好的设计吗? 解决方案二: 直接在函数内调用就可以了.不知道你说的上一层是什么意思.是基类的函数还是集合类所属的对象的函数,前者直接调用,或者用 基类类名::函数名后者用构造函数传对象指针 解决方案三: 同一个类中的函数都是通过t

constraint-在check中使用case函数,为什么end后面要加 =1

问题描述 在check中使用case函数,为什么end后面要加 =1 alter table Salaryadd CONSTRAINT check__salary CHECK( CASE WHEN sex = '2' THEN CASE WHEN salary > 1000 THEN 1 ELSE 0 END ELSE 1 END =1 )_**_** 为什么上面语句最后结束的时候(end 后面)要加上 "=1",否则会提示下面的错误信息:An expression of non

sql-在android中无法使用LIKE函数

问题描述 在android中无法使用LIKE函数 不知道为什么sql语句不运行,请帮忙.谢谢 public Cursor getContactMatches(String query, String[] columns) { String selection = COL_NAME + " LIKE " + "'%" + "%'"; <---- right here Log.d("selection", selection

asp中过程、函数的相似与区别

在VBscript中,过程与函数都是指一组能执行特定功能的代码块,当我们定义了自己的过程或函数后,就可以在脚本中反复调用它们,对于自定义的过程或函数还可以放在外部的文件夹中,使用#include指令调用它们.         在VBscript中,过程与函数都是指一组能执行特定功能的代码块,当我们定义了自己的过程或函数后,就可以在脚本中反复调用它们,对于自定义的过程或函数还可以放在外部的文件夹中,使用#include指令调用它们. 一.定义:       定义过程格式:      Sub 过程名

转帖:PHP4(windows版本)中的COM函数

window|函数 这几天一直在写excel转化成mysql,发现一篇文章,搜一下phpx论坛,没有这个帖子,把它转帖如下: PHP4(windows版本)中的COM函数 介绍 内置于PHP4里的COM函数对于我们在win32环境下开发程序是相当有吸引力的,但是至今仍没有多少相关的技术文档.本文将以三个例子分 别处理 MS office 2000 Word . Excel . Adobe Distiller 来说明如何在PHP中使用COM函数. COM技术是由Microsoft在几年前提出并开发

PHP4(windows版本)中的COM函数

window|函数 介绍 内置于PHP4里的COM函数对于我们在win32环境下开发程序是相当有吸引力的,但是至今仍没有多少相关的技术文档.本文将以三个例子分别处理 MS office 2000 Word . Excel . Adobe Distiller 来说明如何在PHP中使用COM函数. COM技术是由Microsoft在几年前提出并开发的,本文中提到的相关名词有OLE, OLE Automation, ActiveX, COM ,这些词的意思都基本一样,都表示用一段封装的代码(对象)来完