- 浏览: 2162324 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1303开放分类:计算机技术计算机术语计算机科学 收藏分享到顶[6] ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 2976用WebService实现调用新 ... -
Cookie简介及JSP处理Cookie的方法
2010-07-29 09:28 972Cookie简介及JSP处理Cookie的方法 一.什么是 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1258一直想把数据库的默认 ... -
C#Winform调用网页中的JS方法
2010-07-12 11:07 2233其实还是还是相当的简单,本文将详细的用代码来展示一下如何调用, ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 1509用WebService实现调用新 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1087一直想把数据库的默认 ... -
基于 VS 2010 阐述C# 4个特性
2010-05-28 09:26 1081基于 VS 2010 阐述C# 4个特性基于 VS 20 ... -
Google AdSense中文官方博客今天公布了AdSense内容广告与AdSense搜索广告的收入分成比例
2010-05-25 09:12 1129google adsense 的广告分成比例总算是公布出来了。 ... -
权限管理数据表设计说明
2010-05-21 15:19 1083权限管理数据表设计说明 B/S系统中的权限比C/S中的更显的 ... -
权限管理的设计方法
2010-05-20 09:26 1430权限管理的设计方法是 ... -
多表分页存储过程
2010-05-17 14:25 1063分页存储过程 在网站设计,网页开发中,是要被经常遇到的。 ... -
vs2010跟vs2008比较增加了哪些功能
2010-05-18 09:10 2254随着vs2010的发布,新的 ... -
COM域名难逃实名监管 CN域名简化流程抢用户
2010-05-13 09:22 1191互联网实名制的落实第 ... -
网站安全之XSS漏洞攻击以及防范措施
2010-04-29 08:59 1435在网站开发中,安全问题是重中之重的问题,特别像一个sql注入, ... -
深入了解ASP.NET运行内幕
2010-04-28 09:04 1172做事情要知道根本所在 ... -
WebBrowser中显示乱码
2010-04-22 09:09 1738最近在开发cs项目的时候,因为嵌套了一个网页,要用到we ... -
vps配置笔记(10)架设svn服务
2010-04-21 09:41 1267linux 下面架设svn服务器,有点难度,我找了好多资料,现 ... -
JS代码实例:实现随机加载不同的CSS样式
2010-04-19 13:38 1420如果让网页浏览者每次打开页面都有新的感觉,可以通过替换css样 ... -
FCKeidtor的toolbarset的设置
2010-04-20 09:18 1416在软件开过过程中,经过要用到编辑器,其中FCKeidtor应该 ...
相关推荐
本主题将深入探讨如何使用C#实现简单分页,同时支持两种常用的数据源:`DataTable`和`IEnumerable`。 首先,让我们了解分页的基本概念。分页是将大数据集拆分成多个较小的、可管理的部分,每个部分称为一个“页”。...
【C#中的IEnumerable接口深入研究】 在.NET框架中,`IEnumerable<T>`接口是序列化数据的核心,它使得遍历集合变得简单而高效。这个接口定义了一个`GetEnumerator`方法,用于返回一个枚举器实例,该枚举器可以依次...
本文将详细解释`IEnumerable<T>`、`IEnumerable`、`ICollection<T>`、`IList<T>`、`ObservableCollectin<T>`以及`Collection<T>`之间的关系。 首先,`IEnumerable<T>`接口是基础,它定义了一个可以被枚举(即遍历)...
### C#自建类实现集合接口 `IEnumerable` 和 `IEnumerator` 在C#中,自定义一个集合类并使其能够支持常见的集合操作(如迭代、添加、删除等)是非常实用的功能。下面将详细介绍如何通过实现 `IEnumerable` 和 `...
【标题】中的“用于在ASP.NET中轻松分页任何IEnumerable IQueryable的库”指的是一个特定的开发工具或库,它使得开发者在使用ASP.NET框架时,能够便捷地对数据进行分页处理。在Web开发中,分页是常见的功能,尤其在...
在.NET框架中,`IEnumerable<T>`、`ICollection<T>`、`IList<T>`、`ObservableCollection<T>`和`Collection<T>`是几个重要的泛型接口和类,它们在处理集合数据时扮演着不同的角色,提供了不同程度的功能和性能优化。...
Foreach常用于循环访问集合,对实现IEnumerable的接口的容器进行遍历,IEnumerable和IEnumerator接口我有时候也有点迷糊,按官方的解释,IEnumerable是枚举器接口,IEnumerator是迭代器接口,从字面意思来看相差不大...
在C#编程语言中,`IEnumerable<T>`、`ICollection<T>`、`IList<T>`以及`List<T>`是四个常见的接口和类,它们都与集合操作密切相关,但各自具有不同的特性和用途。以下是对这些概念的详细解释: 1. **IEnumerable**...
该方法适用于ASP.NET MVC4的IEnumertable数据类型转换成DataTable数据类型
在C#编程语言中,`IEnumerable`接口是一个非常重要的组件,它是所有可枚举类型的基础。这个接口允许程序员遍历集合中的元素,无论是数组、列表还是自定义数据结构。`IEnumerable`接口存在于`System.Collections`命名...
在.NET框架中,数据访问是开发过程中的关键环节,而`DataReader`和`IEnumerable`都是在处理数据库查询结果时常用的数据结构。`DataReader`是一种高效、流式的数据访问接口,通常用于从数据库读取大量数据,而`...
C#中的IEnumerable接口是.NET框架中用于迭代集合的重要接口,它允许程序遍历任何可枚举类型的数据结构,如数组、列表或者自定义集合。这个接口定义了一个枚举器(enumerator)的概念,使得开发者能够逐个访问集合中...
void ActivationEventBeginInvoke(Func<int> id,Action<IEnumerable<T>> TValue = null, Action<IAsyncResult> Ting=null); IEnumerable<T> GetChildList(); void GetChildList(Action<IEnumerable<T>> TValue)...
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将配置与...