- 浏览: 2106950 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
在平常的代码编写中,虽然不常用到Ienumerable 但却不可不知他的意义,有些时候使用会起到意想不到的作用,
我们从中可以知道 foreach 在IL中,是以Ienumberable 来体现的。
IEnumerable和IEnumerable
主要实现 public IEnumerator GetEnumerator()
C# 1.0中的foreach
没有迭代器的时候,创建一个可用于foreach的集合(C# 1.0):
public class MyCollection : IEnumerable
{ <script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script>
public MyEnumerator GetEnumerator()
{
return new MyEnumerator(this);
}
public class MyEnumerator : IEnumerator
{
public void Reset(){...}
public bool MoveNext(){...}
public int Current{ get{...} }
object IEnumerator.Current{ get{...} }
}
}
对集合使用foreach语句:
foreach(int i in col){...}
相单于:
IEnumerator etor = ((IEnumerable)col).GetEnumerator();
try
{
while(etor.MoveNext())
{
ElementType clem (ElementType)etor.Current;
...;
}
}
finally{(IDisposable)enumerator).Dispose();}
C# 2.0 中的迭代器
使用迭代器创建于foreach的集合(C# 2.0):
public class Stack:IEnumerable
{
T[] items;
int count;
public void Push(T data){...}
public T Pop(){...}
public IEnumerator GetEnumerator()
{
for(int i=count-1;i>=0;--i)
{
yield return items[i];
}
}
}
使用foreach语句:
Stack stack = new Stack();
foreach(int i in statck){...}
//将数据源中的数据都转换为IEnumerable类型,用作数据绑定
//其中_dataSource为数据源,DataMember为要找的数据名称
protected virtual IEnumerable GetDataSource()
{
if(_dataSource == null)
{
return null;
}
IEnumerable resolvedDataSource = _dataSource as IEnumerable;
if(resolvedDataSource != null)
{
return resolvedDataSource;
}
IListSource listSource = _dataSource as IListSource;
if(listSource != null)
{
IList memberList = listSource.GetList();
int i = memberList.Count;
if(listSource.ContainsListCollection == false)
{
return (IEnumerable)memberList;
}
ITypedList typedMemberList = memberList as ITypedList;
if(typedMemberList != null)
{
PropertyDescriptorCollection propDescs = typedMemberList.GetItemProperties(new PropertyDescriptor[0]);
PropertyDescriptor memberProperty = null;
if((propDescs != null) && (propDescs.Count!=0))
{
string dataMember = DataMember;
if(dataMember.Length == 0)
{
memberProperty = propDescs[0];
}
else
{
memberProperty = propDescs.Find(dataMember,true);
}
if(memberProperty != null)
{
object listRow = memberList[0];
object list = memberProperty.GetValue(listRow);
if(list is IEnumerable)
{
return (IEnumerable)list;
}
}
throw new Exception("no Datamember.");
}
throw new Exception("no datamember.");
}
}
return null;
}
发表评论
-
UML
2010-08-09 11:39 1269开放分类:计算机技术计算机术语计算机科学 收藏分享到顶[6] ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 2948用WebService实现调用新 ... -
Cookie简介及JSP处理Cookie的方法
2010-07-29 09:28 933Cookie简介及JSP处理Cookie的方法 一.什么是 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1220一直想把数据库的默认 ... -
C#Winform调用网页中的JS方法
2010-07-12 11:07 2194其实还是还是相当的简单,本文将详细的用代码来展示一下如何调用, ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 1488用WebService实现调用新 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1055一直想把数据库的默认 ... -
基于 VS 2010 阐述C# 4个特性
2010-05-28 09:26 1039基于 VS 2010 阐述C# 4个特性基于 VS 20 ... -
Google AdSense中文官方博客今天公布了AdSense内容广告与AdSense搜索广告的收入分成比例
2010-05-25 09:12 1081google adsense 的广告分成比例总算是公布出来了。 ... -
权限管理数据表设计说明
2010-05-21 15:19 1056权限管理数据表设计说明 B/S系统中的权限比C/S中的更显的 ... -
权限管理的设计方法
2010-05-20 09:26 1393权限管理的设计方法是 ... -
多表分页存储过程
2010-05-17 14:25 1035分页存储过程 在网站设计,网页开发中,是要被经常遇到的。 ... -
vs2010跟vs2008比较增加了哪些功能
2010-05-18 09:10 2231随着vs2010的发布,新的 ... -
COM域名难逃实名监管 CN域名简化流程抢用户
2010-05-13 09:22 1149互联网实名制的落实第 ... -
网站安全之XSS漏洞攻击以及防范措施
2010-04-29 08:59 1368在网站开发中,安全问题是重中之重的问题,特别像一个sql注入, ... -
深入了解ASP.NET运行内幕
2010-04-28 09:04 1141做事情要知道根本所在 ... -
WebBrowser中显示乱码
2010-04-22 09:09 1698最近在开发cs项目的时候,因为嵌套了一个网页,要用到we ... -
vps配置笔记(10)架设svn服务
2010-04-21 09:41 1223linux 下面架设svn服务器,有点难度,我找了好多资料,现 ... -
JS代码实例:实现随机加载不同的CSS样式
2010-04-19 13:38 1390如果让网页浏览者每次打开页面都有新的感觉,可以通过替换css样 ... -
FCKeidtor的toolbarset的设置
2010-04-20 09:18 1382在软件开过过程中,经过要用到编辑器,其中FCKeidtor应该 ...
相关推荐
简单的分页 “上一页”,“下一页”,“尾页”,“首页” 支持数据源DataTable和IEnumerable
IEnumerable、IEnumerable、ICollection、IList、ObservableCollectin和Collection的关系,里面还有个UML图,希望能对大家有所帮助!
Foreach常用于循环访问集合,对实现IEnumerable的接口的容器进行遍历,IEnumerable和IEnumerator接口我有时候也有点迷糊,按官方的解释,IEnumerable是枚举器接口,IEnumerator是迭代器接口,从字面意思来看相差不大...
C#自建集合类MyArrayList实现集合接口IEnumerable, IEnumerator, 实现方法 inr add(object value),void Remove(object o), int Count, void Clear()
该方法适用于ASP.NET MVC4的IEnumertable数据类型转换成DataTable数据类型
用于在ASP.NET中轻松分页任何IEnumerable IQueryable的库.zip
IEnumerable这个接口在MSDN上是这么说的,它是一个公开枚举数,该枚举数支持在非泛型集合上进行简单的迭代。换句话说,对于所有数组的遍历,都来自IEnumerable,那么我们就可以利用这个特性,来定义一个能够遍历字符...
void ActivationEventBeginInvoke(Func<int> id,Action<IEnumerable<T>> TValue = null, Action<IAsyncResult> Ting=null); IEnumerable<T> GetChildList(); void GetChildList(Action<IEnumerable<T>> TValue)...
本文实例讲述了C#中IEnumerable接口用法。分享给大家供大家参考。具体分析如下: 枚举数可用于读取集合中的数据,但不能用于修改基础集合。 最初,枚举数定位在集合中第一个元素前。Reset 方法还会将枚举数返回到此...
首先我看看 IEnumerable: // 摘要: // 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代。 // // 类型参数: // T: // 要枚举的对象的类型。 [TypeDependency(System.SZArrayHelper)] public ...
IEnumerable、ICollection、IList、ObservableCollectin和Collection的关系。还有UML图。希望能帮到有需要的人。:)
Array.js IEnumerable用于javascript数组 var source = [{ Id: 1, Name: 'Item 1' }, { Id: 2, Name: 'Item 2' }, { Id: 3, Name: 'Item 3' }, { Id: 4, Name: 'Item 4' }, { Id: 5, Name: 'Item 5' }, { Id: 6, ...
提供IEnumerable 的NPOI扩展已保存到Excel功能并从中加载。进口将支持将来的功能,并且仅支持Fluent API 。 此存储库中发现的所有问题将仅由,因此,请更新您的代码以使用FluentExcel 。特征 使用fluent api将配置与...
SqlBulkCopyListReader 在 SqlBulkCopy 类中使用的 IEnumerable<T> 的 IDataReader 实现 有关详细信息,请参阅我关于博客文章
IEnumerable 深度不可变,轻量级,具有超能力 注意-IEnumerable与其他现有LINQ实现之间存在一些重要区别。 你可以找到一个例子和IEnumerable功能解释。 IEnumerable是一个库,使您可以创建深度不可变的集合并使用...
IEnumerable这个接口可以说是为了这个特性“量身定制”,再加上微软提供的扩展(Extension)方法和Lambda表达式,给开发者带来了无穷的便利。本人在最近的开发工作中使用了大量的这种特性,同时在调试过程中还遇到了...
如何将任何数据读取器转换为通用列表。