首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

为什么这样类型转换有时候会错?该怎么处理

2012-02-02 
为什么这样类型转换有时候会错?C# codeforeach (IDlg3UCEx t in this.Controls){if(t!null)arr.Add(t.Par

为什么这样类型转换有时候会错?

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,而不是抛出异常.

热点排行