A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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有些搞不明,理解的隐隐约约。。。求解!!!

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

2 个回复

倒序浏览
转以前的解答:
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

希望对你有用

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
Thanks 受教了....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马