c# as
2016-08-02 14:54
253 查看
as:用于检查在兼容的引用类型之间执行某些类型的转换。 Employee myEmployee = myObject as Employee; if (myEmployee != null) { } 在这段代码中,CLR核实myObject是否兼容于Employee类型;如果是,as会返回对同一个对象的一个非null 的引用。如果myObject不兼容于Employee类型,as运算符会返回null。 注意:as运算符造成CLR只校验一次对象的类型。if语句只是检查myEmployee是否为null。这个检查的速度比校验对象的类型快得多。 as运算符的工作方式与强制类型转换一样,只是它永远不会抛出一个异常。相反,如果对象不能转换,结果就是null。所以,正确的做法是检查最终生成的一引用是否为null。如果企图直接使用最终生成的引用,会抛出一个System.NullReferenceException异常。以下代码对此进行了演示: Object o = new Object(); 新建一个Object对象。 Employee e = o as Employee; 将o转型为一个Employee e.ToString(); 访问e会抛出一个NullReferenceException异常 备注: as运算符类似于强制转换操作。但是无法进行转换,则as返回null而非引发异常。 示例: expression as Type它等效于以下表达式,但是只计算一次expression。 expression is Type ?(Type)expression : (Type)null 注意:as运算符只执行引用转换和装箱转换。as运算符无法执行其它转换,如果用户定义的转换,这类转换应使用强制转换表达式来执行。
原文地址:http://zhidao.baidu.com/link?url=FEZKHKa4psgjAH4JP6PqJOqVq1J_PfvtQe9uTXj4KVeblbVDqdTOibRP5MM4PNA6gycRdiDUne63UU_AHZDQ3_
相关文章推荐
- C#操作符??和?:
- 转载:C# this.Invoke()的作用与用法 理解三
- 转载:C#中的Invoke理解一
- [置顶] C#中的反射Reflection动态加载引用
- C# Backgroundworker(后台线程)的使用
- 基于InstallShield2013LimitedEdition的安装包制作
- [C#]结构体和类的区别
- C#中Byte[]和String之间转换的方法
- c# partial类
- C#入门1.1——区分.net与C#
- C#中Gdal读取SHP文件
- C#中基类、派生类以及使用接口来实现多重继承
- C#+OpenGL编程之再见小桃子(The Tao Framework)
- C# Socket简单例子(服务器与客户端通信)
- C# HashTable、HashSet和Dictionary的区别
- C# HashTable、HashSet和Dictionary的区别
- C# HashTable、HashSet和Dictionary的区别
- C# HashTable、HashSet和Dictionary的区别
- C# HashTable、HashSet和Dictionary的区别
- C# HashTable、HashSet和Dictionary的区别