喜
有人可以告诉我以下两个陈述之间的区别是什么,因为它们都给了我相同的结果。我也想知道哪个更好。
Label lblSome = e.Item.FindControl("lblMyLable") as Label;
&&
Label lblSome = (Label)e.Item.FindControl("lblMyLable");
非常感谢你。
答案 0 :(得分:1)
as
检查它是否可以强制转换,如果不能,则将lblSome设置为null。正常投射,(Label)
,不会对您进行检查,而只是给您一个InvalidCastException
。但是,as
不适用于不可为空的结构。
答案 1 :(得分:0)
如果e.Item.FindControl("lblMyLable")
返回非Label (Label)e.Item.FindControl("lblMyLable")
的对象,则会生成InvalidCastException
。
而e.Item.FindControl("lblMyLable") as Label
将导致将null分配给lblSome。