.net中as和is之间的区别分析

 更新时间:2013年05月03日 11:08:03   作者:  
.net中as和is之间的区别分析,需要的朋友可以参考一下

1、as

用于在兼容的引用类型之间执行转换,as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。更严格地说,这种形式的表达式:expression as type,等效于expression is type ? (type)expression : (type)null,只是 expression 只被计算一次。注意,as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来执行 as操作符不会做过的转换操作,当需要转化对象的类型属于转换目标类型或者转换目标类型的派生类型时,那么此转换操作才能成功。

效率:

当用as操作符进行类型转换的时候,首先判断当前对象的类型, 当类型满足要求后才进行转换,而传统的类型转换方式,是用当前对象直接去转换, 而且为了保护转换成功,要加上try-catch. 而且并不产生新的对象【当不成功的时候,会返回null】。 相对来说,as效率高点,用as进行类型转换是安全的。 实例: e.Item.DataItem as DataRowView 同等 (DataRowView)e.Item.DataItem

2、is

检查对象是否与给定类型兼容,例如:if(obj is string){}。如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。不能重载 is 运算符。请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。

相关文章

  • .NET Core中获取各种路径的的方法总结

    .NET Core中获取各种路径的的方法总结

    在 .NET Core 开发过程中,正确处理文件路径是每个开发者都会遇到的常见需求,无论是读取配置文件、写入日志,还是管理上传的文件,都需要准确地获取各种路径信息,本文将全面介绍 .NET Core 中获取各种路径的方法,帮助开发者避免常见的"坑",需要的朋友可以参考下
    2025-04-04
  • ASP.NET MVC页面重定向简单介绍

    ASP.NET MVC页面重定向简单介绍

    这篇文章主要为大家详细介绍了ASP.NET MVC页面重定向的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • asp.net 2.0的文件上传(突破上传限制4M)

    asp.net 2.0的文件上传(突破上传限制4M)

    在asp.net 2.0中,因为有了fileupload控件,上传文件十分简单
    2009-06-06
  • ADO.NET防SQL注入与使用参数增删改查

    ADO.NET防SQL注入与使用参数增删改查

    这篇文章介绍了ADO.NET防SQL注入与使用参数实现增删改查的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • ASP.NET Mvc开发之EF延迟加载

    ASP.NET Mvc开发之EF延迟加载

    ASP.NET Mvc开发之EF延迟加载,到底什么是EF的延迟加载呢?这篇文章我们就来看看
    2016-02-02
  • asp.net中List的使用方法

    asp.net中List的使用方法

    .net真是方便,这几天帮朋友写了个小软件,用它还真感觉轻松自在,很称手,自带的类库既丰富又实用
    2008-10-10
  • .Net Core3.0 WEB API中使用FluentValidation验证(批量注入)

    .Net Core3.0 WEB API中使用FluentValidation验证(批量注入)

    这篇文章主要介绍了.Net Core3.0 WEB API中使用FluentValidation验证(批量注入),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • ASP.NET 主题的简单配置教程

    ASP.NET 主题的简单配置教程

    主题和css差不多但是他可以提供一些css不能提供的特性,下面为大家介绍下ASP.NET 主题的简单配置,感兴趣的朋友不要错过
    2013-12-12
  • 微信公众平台开发教程(八)Session处理问题

    微信公众平台开发教程(八)Session处理问题

    本篇文章主要介绍了微信公众平台开发教程(八)Session处理 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • .net实现动态验证码功能

    .net实现动态验证码功能

    这篇文章主要介绍了.net实现动态验证码功能,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04

最新评论