黑马程序员技术交流社区
标题:
wp7的is和as。。。some不明。。求解!!
[打印本页]
作者:
逝去的谎言
时间:
2012-4-12 22:31
标题:
wp7的is和as。。。some不明。。求解!!
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
if(ContentPanel.Background is SolidColorBrush)//
SolidColorBrush
是最基本的画笔,用于将外观应用于对象,不明。。
{
Color clr=(ContentPanel.Background as SolidColorBrush).Color;//这是说明background是、SolidColorBrush类型吗??
if(e.Content is MainPage) (e.Content as MainPage).ReturnedColor=clr;
PhoneApplicationService.Current.State["Color"]=clr;
}
base.OnNavigatedFrom(e);
}
代码中用到is和as中如:ContentPanel.Background is SolidColorBrush和ContentPanel.Background as SolidColorBrush有些搞不明,理解的隐隐约约。。。求解!!!
作者:
谢栋文
时间:
2012-4-13 07:21
转以前的解答:
is 和 as 操作符是用来进行强制类型转换的
is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常
object o = new object();
if (o is Label)
{
Label lb = (Label)o;
Response.Write("类型转换成功");
}
else
{
Response.Write("类型转换失败");
}
在上面的代码,CLR实际上会检查两次对象的类型,is操作符先核实一次,如果o兼容于Lable,那么在(Label)o时会再次核实一次,效率比较低,不建议使用
as:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null
object o = new object();
Label lb = o as Label;
if (lb == null)
{
Response.Write("类型转换失败");
}
else
{
Response.Write("类型转换成功");
}
在上面的代码中,CLR只会进行一次类型核实,效率要高于 is
希望对你有用
作者:
逝去的谎言
时间:
2012-4-13 12:49
Thanks 受教了....
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2