C#强制类型转化()、is、as应用分析

开发 后端
这里是关于C#强制类型转化()、is、as应用分析,C#强制类型转化一般分为三种。这些强制转化对我们日常的编程工作很有帮助。

C#强制类型转化有以下三种:

注:objA 为 typeA 类型,objB 为 typeB 类型

(1) typeA objA = (typeA)objB;

(2) typeA objA = objB as objA;

(3) typeA objA = objB as typeA

在实际开发过程中我们经常用到上面三种类型转换,但这三种C#强制类型转化的区别,以及在使用中应如何选择呢?

在我们使用***种类型转换时,如果类型typeA是typeB的上层类,则能正确进行类型转换,如typeB是typeA的上层类,将会抛出System.InvalidCastException异常。所以在实开发中,为了避免异常的发行,我们可能会用到如下的代码:

  1. If(objB is typeA)   
  2. {   
  3. objA = (typeA)objB;   
  4. }  

其中is为第二种类型转换,根据MSDN上的解释,它的作用是“检查对象是否与给定类型兼容”,尽管它仅是反回一个boolean类型的值,但它也是通过进行类型转换来判断是否兼容的,所以,在使用此语句的时候,会进行一次类型转换。那么,如果typeB与typeA是相容的话,上述代码将会再次进行 (typeA)objB的类型转,肯定会影响我们所开发程序的性能。那么有没有一种更好的办法来帮助我们解决这个问题呢?

下面我们来看一下第三种C#强制类型转化。

在进行第三种类型转换时,如果typeB型的实例objB无法转换到typeA类型时,就会反回一个null值,若转换成功,则返回一个typeA类型的实例。此种转换不会发生异常,且仅需一次类型转换。这就解决了上面两次类型转换所带来的性能消耗。

本文来自朱保旭的博客园文章《C#下的强制类型转换应用分析:()、is、as》

【编辑推荐】

  1. 定义C#接口学习经验
  2. C# ListBox学习笔记
  3. 操作C# Dataset介绍
  4. C# ODBC访问MySQL数据库
  5. 浅析C#和Java不同点
责任编辑:彭凡 来源: 博客园
相关推荐

2009-08-24 14:20:13

C# 强制类型转换

2009-08-24 15:02:05

C# 类型

2009-08-12 18:10:33

C#类型转化

2009-09-01 10:58:46

C#匿名类型对象

2009-09-01 18:05:17

C#类型声明

2009-08-18 10:35:46

C#枚举类型

2009-08-21 09:57:08

C#操作符IS与AS

2009-08-18 09:51:18

C#枚举类型

2009-09-04 13:37:44

C#货币格式

2009-08-10 17:25:58

C#匿名类型

2011-06-17 16:42:23

C#

2009-08-26 10:34:15

C#类型C#变量

2009-08-28 15:49:35

C# Control类

2009-08-31 14:34:46

C#值类型C#结构类型

2009-08-26 15:46:01

C#匿名类型

2009-08-14 17:09:48

C#引用类型

2009-08-06 15:30:23

C#类型系统

2011-07-14 10:39:08

强制类型转换函数C++

2010-12-30 09:44:10

C#Attribute

2009-08-19 16:39:44

C#值类型C#引用类型
点赞
收藏

51CTO技术栈公众号