设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 259|回复: 3
打印 上一主题 下一主题

C#中foreach基础使用方法

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 23:16:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天做老师的网站作业。要对一些对象做添加修改删除处理。别的倒没什么,删除时出现了点问题似的。
因为是从一个类的集合中删除掉一个元素。这样就要遍历整个集合,而foreach正是为遍历准备的新玩意。自然而然用上了。于是代码类似如下:
string temp = name.Text; // 从TextBox中读出数据
foreach (LCourse cou in Data.myCourse) // 在List中遍历
{
if (cou.name == temp) // 判断cou的名字匹配
{
Data.myCourse.Remove(cou); // 匹配的即为要删除的,从列表中去除
break; // 跳出循环
}
}


很容易就想到这么用foreach,貌似也没错误。但是印象中关于foreach的注意点就是只适用于遍历读取,不能修改。上边的代码却删除成功。这样,矛盾的种子就种在了心里,到底foreach是个什么东西?
过程:
看了MSDN文档,可是文档里的示例用到时都是遍历读取每个元素,所以帮助不大。相关测试,异常,编译错误反倒有很大用处。

过程细节和总结:
1.自定义整型数组然后遍历修改
foreach(int myint in myArray)
{ myint+=8;}


错误:“myint”是一个“foreach 迭代变量”,无法为它赋值G:\TEST\VS..C#\testforeach\Program.cs 15 27 testforeach
2.自定义类,在类中定义函数对私有成员进行操作,然后遍历类对象并调用函数
public class MyClass // 自定义的测试类
{
private int i = 0;
public void change()
{
i = 98;
}
public override string ToString()
{
return i.ToString();
}
}
MyClass[] myTest = new MyClass[10]; // 测试代码片段
foreach (MyClass mc in myTest)
{
mc.change();
Console.WriteLine(mc.ToString());
}


通过了编译,但是抛出异常,NullRefferenceException,未将对象引用设置到对象的实例。
3.就是像开头测试的例子,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 08:21 , Processed in 0.095628 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表