• C# 中as 与 is的用法及区别


    一、类型转换

    1.任何类型都可以转换为其基类类型,用隐式转换完成;
    2.任何类型转换为其派生类型时,必须进行显示转换。如:(类型名)对象名;
    3.使用GetType可以取得任何对象的精确类型;
    4.基本类型可以使用Convert类实现类型转换;
    5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
    6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);

    二、is/as示例

    is转换规则:

    1. 检查对象类型的兼容性,并返回结果true(false);
    2.不会抛出异常;
    3.如果对象为null,刚返回false;

    示例:

    C#代码 复制代码
    1. object o = "abc";   
    2. if (o is string//执行第一次类型兼容性检查   
    3. {   
    4.     string s = (string)o; //执行第二次类型兼容性检查,并转换   
    5.     MessageBox.Show("转换成功!");   
    6. }   
    7. else  
    8. {   
    9.     MessageBox.Show("转换失败!");   
    10. }  
        object o = "abc";
        if (o is string) //执行第一次类型兼容性检查
        {
            string s = (string)o; //执行第二次类型兼容性检查,并转换
            MessageBox.Show("转换成功!");
        }
        else
        {
            MessageBox.Show("转换失败!");
        }
    


    as转换规则:

    1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
    2.不会抛出异常;
    3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;

    示例:

    C#代码 复制代码
    1. object o = "abc";   
    2. string s = o as string//执行第一次类型兼容性检查,并返回结果   
    3. if (s != null)    
    4.     MessageBox.Show("转换成功!");   
    5. else  
    6.     MessageBox.Show("转换失败!");  
        object o = "abc";
        string s = o as string; //执行第一次类型兼容性检查,并返回结果
        if (s != null) 
            MessageBox.Show("转换成功!");
        else
            MessageBox.Show("转换失败!");
    


    注:as比is少执行一次兼容性检查,性能可能会高一点点。 
  • 相关阅读:
    python模块之__future__模块
    SQL之分组排序取top n
    SQL之层次查询
    win server 2008添加磁盘-脱机转换为联机状态方法
    拉链表-增量更新方法一
    一道hive SQL面试题
    一道与时间差有关的SQL面试题
    (转)linux中nmcli命令的使用及网络配置
    (转)内核模块操作命令-lsmod+rmmod+modinfo+modprobe
    (转)Linux 系统设置 : dmesg 命令详解
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1977968.html
Copyright © 2020-2023  润新知