C#使用foreach相对于for有什么优势吗?

chenwei9120 2010-05-02 07:55:23
不知道相对于for来说,foreach有什么优势?
...全文
839 65 打赏 收藏 转发到动态 举报
写回复
用AI写文章
65 条回复
切换为时间正序
请发表友善的回复…
发表回复
岳丰源 2010-12-22
  • 打赏
  • 举报
回复
Java中foreach是引入泛型后出来引进来的
cjh200102 2010-10-13
  • 打赏
  • 举报
回复
楼上说得都不错
xk1126 2010-05-11
  • 打赏
  • 举报
回复
foreach只读,for可写的!我觉得这是它们最主要的区别.
foreach最主要的优势是不需要知道集合内的元素个数,可以很方便的遍历每个元素.
我个人比较喜欢用foreach
缪军 2010-05-11
  • 打赏
  • 举报
回复
囸,越说越离谱,服了
wangwenzhuang 2010-05-11
  • 打赏
  • 举报
回复
foreach只可以遍历,不可以在遍历的同时修改集合的元素,for遍历可读可写可删
for比foreach性能要好
但是foreach相对for使用更方便简洁
lh1611 2010-05-11
  • 打赏
  • 举报
回复
foreach 不需要关心数组的大小;在for里面要 循环初始化,循环条件和循环参数调整。
lh1611 2010-05-11
  • 打赏
  • 举报
回复
foreach 不需要关心数组的大小;在for里面要 循环初始化,循环条件和循环参数调整。
lh1611 2010-05-11
  • 打赏
  • 举报
回复
foreach 不需要关心数组的大小;在for里面要 循环初始化,循环条件和循环参数调整。
garfieldzf 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mngzilin 的回复:]
看下链表的相关知识,你就明白了。
[/Quote]

多个知识点该学了
army369168520 2010-05-11
  • 打赏
  • 举报
回复
public void bianliArray()
{
double[] doubleArr = new double[10] { 1,2,3,4,5,6,7,8,9,10};

foreach (double data in doubleArr) //使用循环遍历
{
Response.Write(data.ToString());
}

IEnumerator<double> enumber = (IEnumerator<double>)doubleArr.GetEnumerator(); //使用IEnumerator
while (enumber.MoveNext())
{
Response.Write(enumber.Current.ToString());
}
多写一个例子,学习我喜欢多练
army369168520 2010-05-11
  • 打赏
  • 举报
回复
for 你先要给初值,末值和步长

foreach 不需要事先给定初值,末值和步长,他是自动遍历给定的集合体的所有值

string[] a=new string[]{"a","b"}

for(i=0;i<a.length;i++)
{
Response.write(a[i].ToString());
}

foreach(string b in a)
{
Response.write(b);
}
Rotel-刘志东 2010-05-11
  • 打赏
  • 举报
回复
foreach比较简洁了。
Joe-xXx 2010-05-11
  • 打赏
  • 举报
回复
互用特点,如果你知道更多的详细信息~Google foreach与for
丛晓男 2010-05-11
  • 打赏
  • 举报
回复
如果你把总人口看成一个集合,每次遍历,有人去世,有人出生,动态的删除和添加,至少C#提供的foreach是不行的
fangcheng96 2010-05-11
  • 打赏
  • 举报
回复
纠结这些有P的意思
丛晓男 2010-05-11
  • 打赏
  • 举报
回复
楼上几位所说的foreach只读,应该是说对于集合元素的增减而言,不是集合内元素属性的修改
丛晓男 2010-05-11
  • 打赏
  • 举报
回复
如果你在遍历集合的时候,还要去删除集合中的某些元素,或者增加一些要素的话,C#的foreach就不能正确运行,此时每当有增删行为时,就要确定集合的边界,也就只能用for循环。
ProjectDD 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 projectdd 的回复:]
foreach 的遍历对象 不论是数组也好还是 链表等也好,它的这些对象 不需要占用内存的

foreach 可以用yield return封装一个循环,从代码效率来说 foreach 更简单,从运行效率来说
for更低层
[/Quote]

更正下,不是说数组不占内存是说 返回IEnumerable<T>可以不占用,

例如:

IEnumerable<string> get(){
yield return "aaa";
yield return "bbb";
yield return "ccc";
yield return "ddd";
}

void Test(){
foreach(var item in this.get()){
...
}
}
gbb21 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 microtry 的回复:]
我只是觉得楼上的好几位说的理由很搞笑:

3、恕我水平有限,第一回听说forea……
[/Quote]

haha
spmzfz 2010-05-11
  • 打赏
  • 举报
回复
foreach 不需要关心数组的大小;在for里面要 循环初始化,循环条件和循环参数调整。
加载更多回复(44)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧