比如
ArrayList x=new ArrayList();
x.Add(10);
x.Add("SS");foreach(string s in x)
{
}编译器展开成等价如下形式的代码:
ArrayList x=new ArrayList();
x.Add(10);
x.Add("SS");IEnumerator enumerator = (x).GetEnumerator();
try {
while (enumerator.MoveNext()) {
string element = (string)enumerator.Current; // here is casting occures **************
// loop body;
}
}
finally {
IDisposable disposable = enumerator as System.IDisposable;
if (disposable != null) disposable.Dispose();
}
注意编译器会在***********处增加强制类型转换。如果ArrayList中的元素不都是string,会报运行时错误。
ArrayList x=new ArrayList();
x.Add(10);
x.Add("SS");foreach(string s in x)
{
}编译器展开成等价如下形式的代码:
ArrayList x=new ArrayList();
x.Add(10);
x.Add("SS");IEnumerator enumerator = (x).GetEnumerator();
try {
while (enumerator.MoveNext()) {
string element = (string)enumerator.Current; // here is casting occures **************
// loop body;
}
}
finally {
IDisposable disposable = enumerator as System.IDisposable;
if (disposable != null) disposable.Dispose();
}
注意编译器会在***********处增加强制类型转换。如果ArrayList中的元素不都是string,会报运行时错误。
解决方案 »
- 数据源动态生成XML 文件
- DataSet DataGridView 问题
- DataGridViewLinkCell 鼠标指针的形状
- winform中如何实现webform中DataList效果
- 对于托管资源,我DISPOSE了,垃圾回收的时候还会去回收吗?
- 求查询多张表的存储过程
- C#中如何使用Socket传送文件啊??急~~~~
- 在线等,outlook expree存放电子邮件的默认目录是啥?你可以在“工具-》选项-》维护->存储文件夹"中看到。我因为以前改掉了,所以不知
- 如何再DataTable中进行再次筛选
- 用什么控件可以将ASP.net程序做成桌面程序的风格?
- 各位高手,C#中如何做出仿照VS中的“添加应用”界面,浏览项目下的效果
- 中英文两种语言的resx,为什么中文出现在默认的resx里面,而英文的没有?
好吧,记下来,
我有个缺点,就是书上没讲到的知识点,我自已遇到的问题,即使后来知道答案了,但是总感觉自己无法理解,只能死记住。
要是书上一开始就说会强制类型转换,我就会很理解的样子,冏。
我看《C井入门经典》第六版239页的代码时碰到的
我认为LZ并不是故意来提问的。
或许你听说过“不完全信息静态博弈”这个概念,显然一个人遇到的问题,99.999999%在Internet上面都能找到答案。但为啥还是会有那么多人提问?互联网是一个巨大的信息数据库,但是并不是所有人都完全掌握的。
ArrayList x=new ArrayList(); x.Add(10); x.Add("SS"); foreach(string s in x) { } 如这段代码,foreach语句也可以这样写:
foreach (Object stemp in x)
{
Console.WriteLine(stemp.ToString() + " ");
}foreach语句相比for的好处在于同样实现遍历,但去掉了迭代器,不需要进行边界检查。要知道数组越界是常见问题。