有什么区别以及它们之间的利弊
LinkButton lb = (LinkButton)ctl;
Run Code Online (Sandbox Code Playgroud)
和
LinkButton lb = ctl as LinkButton;
Run Code Online (Sandbox Code Playgroud)
我尝试使用第一个,它给了我错误,然后我尝试使用关键字的另一个,它工作得很好.
先感谢您.
Aar*_*nLS 15
第一个是显式转换,第二个是转换.如果as关键字转换失败,则只返回null而不是抛出异常.
这是每个的文档:
请注意,在上面的链接文档中,他们声明as关键字不支持用户定义的转换.+1到Zxpro :)这是用户定义的转换:
我使用as操作员与直接投射的通常指导如下:
as运算符.以上适用于参考类型.对于值类型(如bool或int),as不起作用.在这种情况下,您需要使用is支票来进行"安全演员",如下所示:
int y;
if (x is int)
{
y = (int)x;
}
else
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
我不建议尝试捕获InvalidCastException,因为这通常是程序员错误的标志.请使用上面的指导.
我相信使用第一种方法进行转换会抛出异常,如果它无法正确转换对象(尝试转换错误的类型),而使用as关键字只会将变量设置为null,如果它无法正确转换它.
因此,请确保如果您使用as关键字强制转换,请检查
if(lb == null)
return null; // or throw new Exception()
Run Code Online (Sandbox Code Playgroud)
如果使用()强制转换,则用它包围
try
{
LinkButton lb = (LinkButton)ctl;
}
catch(InvalidCastException ex)
{
//TODO: Handle Exception
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22964 次 |
| 最近记录: |