Loj*_*jol 10 c# casting arraylist
ArrayList x=new ArrayList();
x.Add(10);
x.Add("SS");
foreach(string s in x)
{
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着当foreach运行时它会尝试将数组列表的元素转换为在foreach表达式中键入?
Meh*_*ari 12
是的,如果一个元素不能转换为该类型,那么你将得到一个InvalidCastException.你的情况,你可以不投盒装int要string造成一个异常被抛出.
基本上,它相当于:
foreach (object __o in list) {
string s = (string)__o;
// loop body
}
Run Code Online (Sandbox Code Playgroud)
根据foreach语句的c#规范,你的代码相当于
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();
}
Run Code Online (Sandbox Code Playgroud)