for跟foreach的区别 其实这俩我还是比较倾向于使用for,因为习惯了!不知道哪个效率能高点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是foreach 不过有些情况还是必须用到for的 比如for{}里面需要用到下标什么的 两个效率一样的,可以做一个试验看看,时间差不多,foreach的实现原理就是用的for但是对于开发人员来说,foreach代码比较少,除了某些必须要用下标的情况一般还是foreach比较方便的 foreach,好像必须实现接口IEnumerator才可以用的吧。 foreach用于遍历实现IEnumerable接口的集合的元素,你可能无法知道当前元素在集合中是第几个for就没有这个限制,各有优缺点 foreach用来遍历未知数目的元素,如在一个页面的控件 LS误导,,,,遍历为止数目???呵呵!!!!有专门的length属性或者count属性,,,难道是未知?string[] strNames = new string[] { "张三", "李四" }; foreach (string strName in strNames) { strName += "Num1";//错误 } for (int i = 0; i < strNames.Length; i++) { strNames[i] += "num1"; }从以上代码你能发现几点就算几点吧!!提示两点:foreach遍历的时候该元素是只读的,遍历不需要其长度!!!,既然是只读,速度肯定比for快! foreach 比for 快,少个i++的时间 后者更快,因为会有编译优化。忘记是那本书上讨论过,有的时候foreach比C++/C的循环结构还要快。 foreach 用来遍厉实现IEroumable接口的集合 每次返回的就是这个集合中的一个元素 当然有的时候用for 也可以实现for 是单纯的用来控制迭代的。你可以把foreach看成是for 的一个子集举个例子:计算 1+2+...+100可以用for 却不可以用foreach foreach快些,尤其是循环对象和datarow时,如果光是数字循环没什么区别.i like foreach 对于这两个的说法是众说纷纭,其实是个有利弊,只要合适的时候选择合适的就可以了,楼主可以看一下这篇文章,这篇文章重视的是foreach。当然也有文章说for效率更高。http://www.cnblogs.com/yzxchoice/archive/2007/12/15/995949.html 支持6楼这个,至于效率,一般哪个合适就用哪个吧我一般也都是使用foreach,但是需要计数时就用for比如:foreach(DataRow dr in dtData.Rows){.......}// 需要计数时for(int i=0;i<dtData.Rows.Count;i++){DataRow dr = dtData.Rows[i]; .......} 去看看《Effective C# 中文版 》条款11:优先采用foreach循环语句;里面很详细的说明了两者的区别;前面也有人说了,性能的话是foreach快,但是为什么快的解释都是错误的或者说的不完整 foreach的效率明显高于 for for 是一行一行的读取,而foreach是一次性读取出来。 foreach是范性的,foreach比for快10倍 使用foreach的集合必须实现IEnumerator,IEnumerator中有 moveNext方法,去找到下个对象。效率不确定 那也不一定 for里也不一定就有到类型转换 啊? 本来就是啊嘿嘿...我还是喜欢用for foreach 更面向对象一些 for 带有一定的逻辑性质!要是循环集合的话还是foreach好吧,其他的循环还是用for吧 个人意见! 如果foreach与for都能实现的功能情况下,foreach效率高于for 看你怎么用了 如果 需要对队列前后座操作那么 就用for如果 矩阵单元素平均操作foreach 或者each 把for循环放在itemdataBound里程序运行很慢 怎么办。? c#中,查询之后的数据是多页显示,当点击第二页之后数据就回到了原始数据 ComponentArt.web.ui的Grid控件的问题? 请各位高人指点一下连接SQlite的入门级问题! 页面中判断是否登录的问题 ASP.NET客户管理系统下午CPU100%无法打开。。。 对CheckBoxList各项关联的问题 调用一个存储过程执行出错。。 超级asp.net菜鸟问题,请教.. 关于服务器端控件的问题?? 批量后台打印的问题? crystal report类型已存在是怎样的错误?
但是对于开发人员来说,foreach代码比较少,除了某些必须要用下标的情况一般还是foreach比较方便的
for就没有这个限制,各有优缺点
string[] strNames = new string[] { "张三", "李四" };
foreach (string strName in strNames)
{
strName += "Num1";//错误
} for (int i = 0; i < strNames.Length; i++)
{
strNames[i] += "num1";
}
从以上代码你能发现几点就算几点吧!!提示两点:foreach遍历的时候该元素是只读的,遍历不需要其长度!!!,既然是只读,速度肯定比for快!
忘记是那本书上讨论过,有的时候foreach比C++/C的循环结构还要快。
for 是单纯的用来控制迭代的。你可以把foreach看成是for 的一个子集举个例子:计算 1+2+...+100
可以用for 却不可以用foreach
i like foreach
当然也有文章说for效率更高。
http://www.cnblogs.com/yzxchoice/archive/2007/12/15/995949.html
我一般也都是使用foreach,但是需要计数时就用for
比如:foreach(DataRow dr in dtData.Rows){
.......
}// 需要计数时
for(int i=0;i<dtData.Rows.Count;i++){
DataRow dr = dtData.Rows[i];
.......
}
前面也有人说了,性能的话是foreach快,但是为什么快的解释都是错误的或者说的不完整
for 是一行一行的读取,而foreach是一次性读取出来。
效率不确定
我还是喜欢用for
如果 矩阵单元素平均操作foreach 或者each