zoukankan      html  css  js  c++  java
  • 3.C#知识点:is和as

    IS和AS 都是用于类型转换的操作。

    但是这两个有什么区别呢?

    简单的来说 is 判断成立则返回True,反之返回false。as 成立则返回要转换的对象,不成立则返回Null。

    下面掏一手代码来说明一下。

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace IsAndAsTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                object child = new Child();
                bool b1 = (child is Father);
                bool b2 = (child is Mother);
                Console.WriteLine(b1);//返回true
                Console.WriteLine(b2);//返回false
                Console.ReadKey();
            }
        }
        public class Father
        {
    
        }
        public class Child:Father
        {
    
        }
        public class Mother
        {
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace IsAndAsTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                object child = new Child();
                //bool b1 = (child is Father);
                //bool b2 = (child is Mother);
                //Console.WriteLine(b1);//返回true
                //Console.WriteLine(b2);//返回false
                //Console.ReadKey();
                Father f1 = child as Father;//可以得到转换成功,得到对象
                Mother m1 = child as Mother;//转换失败,m1的值为null
            }
        }
        public class Father
        {
    
        }
        public class Child:Father
        {
    
        }
        public class Mother
        {
    
        }
    }

    有一点我要强调一下就是子类可以转换父类,但是父类不能转换为子类,这就比如现在这个社会。你父母的东西是你的,但是你的东西还是你的一样。

                Father F2 = new Father();
                Child C1 = (Child)F2;

    第二句代码转换的时候就会失败了。因为父类不能强转换为子类。Father不能转换为Child,但是我们如果用As进行转换的话为得到一个null的c1对象。

    总结 

    由他们返回值就可以简单的知道他们的用法。

    is 主要用于类型推断,而不需要实际的转换。

    as 主要用于真正的类型转换。

     

  • 相关阅读:
    关于JEE web项目 Servlet中 “/” 的解释 ;
    通过session 怎么防止表单的重复提交!
    Struts hibernate Spring 框架原理
    apache DBUtils 使用例子demo
    二十三种设计模式通俗理解
    怎样将一个脚本添加到开机自启动中
    zabbix
    数据库
    nginx服务器
    Luogu P3398 仓鼠找sugar
  • 原文地址:https://www.cnblogs.com/DingKing/p/8076341.html
Copyright © 2011-2022 走看看