foreach怎么用?

kgdxpr 2006-06-24 01:47:36
在网上找了半天也没找到foreach到底怎么用,到底是什么意思。

哪位高手能说一下,谢谢。
...全文
428 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LMTZ 2006-06-24
  • 打赏
  • 举报
回复
使用foreach的约束:
①使用 foreach , 必须在被 foreach in对象类 中实现
 GetEnumerator 方法(继承IEnumerable) 。
②foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。
③foreach 内部,不允许更改 foreach in对象 中的集合。

问题:
ArrayList arr = new ArrayList();
arr.Add("123");
arr.Add("456");
arr.Add("789");

foreach (string str in arr)
{
arr.Remove("789");
Console.WriteLine(str);
}
以上代码当便利ArrayList中的第二个对象时,会引发InvalidOperationException异常。

分析:
当使用 foreach 时,首先调用被遍历对象的 GetEnumerator 方法,返回一个Enumerator ,
然后 foreach 将对这个返回的枚举数进行遍历。
个人感觉 foreach 实际做的操作就是:
IEnumerator enumArr = arr.GetEnumerator();
while (enumArr.MoveNext())
{
set.Remove("789");
System.Console.WriteLine(enumArr.Current);
}
而MSDN上有如下说明:
”只要集合保持不变,枚举数就将保持有效。
 如果对集合进行了更改(例如添加、修改或删除元素),
 则该枚举数将失效且不可恢复,并且下一次对 MoveNext 或 Reset 的调用将引发
 InvalidOperationException。”
所以发生了上面问题中的代码发生了异常。
nnh 2006-06-24
  • 打赏
  • 举报
回复
<Script runat="server">
Sub Page_Load(s as object, e as eventargs)
Dim colShoppingList As ArrayList
Dim strItem As String

colShoppingList = New ArrayList
colShoppingList.Add( "eggs" )
colShoppingList.Add( "milk" )
colShoppingList.Add( "beer" )
colShoppingList.Add( "orange" )

For Each strItem in colShoppingList
Response.Write( "<li>" & strItem )
Next
End Sub
</Script>
Wangzhaokang 2006-06-24
  • 打赏
  • 举报
回复
简介:foreach是一个不用管数量的循环语句,而for循环要有数量范围

参数:foreach(type t in type tt)
t和tt都是类型参数

例子:foreach(string str in strArray)
其中strArray是数组,数组中的每一项是字符,所以t为string类型
再来:foreach(DataRow dr in table.Rows)
其中table.Rows表示表中的所有行,所以t为DataRow类型
CCjian 2006-06-24
  • 打赏
  • 举报
回复
多了,我就不出了
verydxz 2006-06-24
  • 打赏
  • 举报
回复
实现了IEnumerable接口或者2.0中实现了跌代器的,可以用foreach遍历

e.g

int a[];

foreach(int tmp in a)
{
tmp...
}



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

是一样的
ymyang 2006-06-24
  • 打赏
  • 举报
回复
类似于for循环语句,可用于遍历数组
用法:
char[] text=new char[]{'a','b','c','d','e'};
foreach(char x in name)
{
Console.Write("{0}",x);
}
hunter_32 2006-06-24
  • 打赏
  • 举报
回复
foreach( Control c in DataGrid.Controls)
{
}
kssys 2006-06-24
  • 打赏
  • 举报
回复
//以下演示使用foreach遍历当前的TextBox

foreach(Control ctl in this.Controls)
{
  if(ctl.GetType()==typeof(TextBox))
  {
    console.WriteLine(ctl.Name);
  }
}

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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