zoukankan      html  css  js  c++  java
  • [你必须知道的.NET] 第一回:恩怨情仇:is和as (转载)

    作者:Anytao

     

     

    本文将介绍以下内容:

    • 类型转换

    • is/as操作符小议 

    1. 引言 

    类型安全是.NET设计之初重点考虑的内容之一,对于程序设计者来说,完全把握系统数据的类型安全,经常是力不从心的问题。现在,这一切已经在微软大牛们的设计框架中为你解决了。在.NET中,一切类型都必须集成自System.Object类型,因此我们可以很容易的获得对象的准确类型,方法是:GetType()方法。那么.NET中的类型转换,应该考虑的地方有那些呢?

    2. 概念引入

    类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下:

    • 任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成;
    • 任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名;
    • 使用GetType可以取得任何对象的精确类型;
    • 基本类型可以使用Covert类实现类型转换;
    • 除了string以外的其他类型都有Parse方法,用于将字符串类型转换为对应的基本类型;
    • 值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。

    3. 原理与示例说明

    浅谈了类型转换的几个普遍关注的方面,该将主要精力放在is、as操作符的恩怨情仇上了。类型转换将是个较大的话题,留于适当的时机讨论。

    is/as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。

    is的规则如下:

    • 检查对象类型的兼容性,并返回结果,true或者false;
    • 不会抛出异常;
    • 如果对象为null,则返回值永远为false。

    其典型用法为:

     1object o = new object();
     2
     3class A
     4
     5{
     6
     7}
     8
     9if (o is A)  //执行第一次类型兼容检查
    10
    11{
    12
    13  A a = (A) o;  //执行第二次类型兼容检查
    14
    15}
    16
    17

     as的规则如下:

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

    其典型用法为: 

     1object o = new object();
     2
     3class B
     4
     5{
     6
     7}
     8
     9B b = o as B;  //执行一次类型兼容检查
    10
    11if (b != null)
    12
    13{  
    14
    15  MessageBox.Show("b is B's instance.");
    16
    17}
    18
    19

    4. 结论

    纵上比较,is/as操作符,提供了更加灵活的类型转型方式,但是as操作符在执行效率上更胜一筹,我们在实际的编程中应该体会其异同,酌情量才。

  • 相关阅读:
    PDF文件中的Form保存问题
    Understanding IP Fragmentation
    tcp ip guide IPsec IKE
    Windows安全事件日志中的事件编号与描述
    Cisco PIX fix up and Juniper firewall FTP ALG
    很好的IPSec介绍,详细解释了IKE协商的2个阶段的作用
    virtualbox 下运行Ubuntu 8.10的分辨率和guest additions的问题。
    Fixing the ‘Do you want to display nonsecure items’ message
    windows xp 开始菜单里面所有项目右键不起作用。
    HP backup and recovery manager
  • 原文地址:https://www.cnblogs.com/nianshi/p/760411.html
Copyright © 2011-2022 走看看