为什么这样类型转换有时候会错?
- C# code
foreach (IDlg3UCEx t in this.Controls) { if(t!=null) arr.Add(t.ParaName+"="+t.ParaValue); }
IDlg3UCEx是用户控件的基类
有时候这样时候会包转换失败的异常
但是这样就没事
- C# code
foreach (Control obj in this.Controls) { IDlg3UCEx t = obj as IDlg3UCEx; if(t!=null) arr.Add(t.ParaName+"="+t.ParaValue); }
我是新手,希望前辈指点一下。
[解决办法]
as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。它是类型安全的.
上面的foreach循环会引发异常是因为有时候这种强制转换会不成功.
下面的不会引发异常是因为as 是类型安全的强制类型转换操作符的缘故,它执行强制转换时若不成功,返回null,而不是抛出异常.