• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中AS和IS关键字的用法

C#中AS和IS关键字的用法

作者:那年的冬天 字体:[增加 减小] 来源:互联网 时间:2017-05-28

那年的冬天 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,奔驰c200等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在程序中,进行类型转换是常见的事,C#支持基本的强制类型转换方法,例如:

Object obj1 = new NewType();
NewType newValue = (NewType)obj1;
</div>

这样强制转换的时候,这个过程是不安全的,因此需要用try-catch语句进行保护,这样一来,比较安全的代码方式应如下所示:

Object obj1 = new NewType();
NewType newValue = null;
try
{
newValue = (NewType)obj1;
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
</div>

但是上面的写法在C#中已是过时的写法,也是比较低效的写法,比较高效且时尚的写法是用as操作符,如下:

Object obj1 = new NewType();
NewTYpe newValue = obj1 as NewType
</div>

安全性:

as操作符不会做过的转换操作,当需要转化对象的类型属于转换目标类型或者转换目标类型的派生类型时,那么此转换操作才能成功,而且并不产生新的对象【当不成功的时候,会返回null】。因此用as进行类型转换是安全的。

效率:

当用as操作符进行类型转换的时候,首先判断当前对象的类型,当类型满足要求后才进行转换,而传统的类型转换方式,是用当前对象直接去转换,而且为了保护转换成功,要加上try-catch,所以,相对来说,as效率高点。
需要注意的是,不管是传统的还是as操作符进行类型转换之后,在使用之前,需要进行判断转换是否成功,如下:

if(newValue != null)
{
//Work with the object named “newValue“
}
</div>

但是,使用as操作符要注意以下几点:

1、不用在类型之间进行类型转化,即如下编写就会出现编译错误。

NewType newValue = new NewType();
NewTYpe1 newValue = newValue as NewTYpe1;
</div>

2、不能应用在值类型数据,即不能如下写(也会出现编译错误)

Object obj1 = 11;
int nValue = obj1 as int;
</div>

对于1.,可以用传统的类型转换方式完成:

NewTypeOne newTestOne = new NewTypeOne();
NewTypeTwo newTestTwo = (NewTypeTwo)newTestOne;
</div>

要想使上面的操作正确完成,在原有类型中增加类型转换操作符函数,即需要完成类似如下的代码:

public calss NewTypeOne
{
public static explicit operator NewTypeTwo( NewTypeOne obj1)
{
//Convert object into new type
}
}
</div>

对于2,在C#中可以使用is操作符,再加上老式的类型转换操作,就可以安全完成转换,要完成如上操作,正确的写法如下:

Object obj1 = 11;
if(objTest is int )
{
int nValue = (int)obj1;
}
</div>

在C#中提供的很好的类型转换方式总结为:

Object => 已知引用类型——使用as操作符完成;

Object => 已知值类型——先使用is操作符来进行判断,再用类型强转换方式进行转换;

已知引用类型之间转换——首先需要相应类型提供转换函数,再用类型强转换方式进行转换;

已知值类型之间转换——最好使用系统提供的Conver类所涉及的静态方法。

下面给大家介绍下C#中关于as关键字的使用

我们在实际编码中有时会用到as关键字来将对象转换为指定类型,与is类型不同的是,is关键字是用于检查对象是否与给定类型兼容,如果兼容就返回true,如果不兼容就返回false。而as关键字会直接进行类型转换,如果转换成功会返回转换后的对象,如果转换不成功则不会抛出异常而是返回null。

  下面我们创建一个简单的用例来阐述as的用法:

1.以visual studio2015为开发环境,新建一个window Form窗体应用程序,并将其命名为TransForm.

2.向窗体中添加一个button控件,用于类型转换,再添加一个GroupBox控件,向此控件中添加三个RadioButton控件,分别用于选择哪种类型。

3.详细代码如下:

private void btn_Get_Checked(object sender,EventArgs e)
{
if(rbtn_object.checked)
{
using (FileStream P_filestream=new FileStream(@'d:\log.txt',System.IO.FileMode.Create))
{
object p_Object = P_filestream as object;
if(p_Object!=null)
{
Message.Box("转换Obejct成功","提示");
}
else
{
Message.Box("转换Obejct失败","提示!")
}
}
if(rbtn_stream.checked)
{
using (FileStream P_filestream=new FileStream(@'d:\log.txt',System.IO.FileMode.Create))
{
obejct p_object=P_filestream;
Stream P_Stream = p_objec as Stream;
if(P_Stream!=null)
{
Message.Box("转换Stream成功","提示");
}
else
{
Message.Box("转换Stream失败","提示!")
}
}
}
}
</div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28C#使用默认浏览器打开网页的方法
  • 2017-05-28C#数据结构之队列(Quene)实例详解
  • 2017-05-28C#之WinForm WebBrowser实用技巧汇总
  • 2017-05-28C#中WinForm程序退出方法技巧总结
  • 2017-05-28C#词法分析器之正则表达式的使用
  • 2017-05-28C#中委托用法实例详解
  • 2017-05-28c#版json数据解析示例分享
  • 2017-05-28C#实现随鼠标移动窗体实例
  • 2017-05-28C#中AS和IS关键字的用法
  • 2017-05-28C#编程自学之数据类型和变量一

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#动态执行批处理命令的方法
    • c#中返回文章发表的时间差的示例
    • C#中File类的文件操作方法详解
    • C#实现读写ini文件类实例
    • sort page 排序和分页的小例子
    • c#基础学习之封装
    • C#微信公众号与订阅号接口开发示例代码
    • C#调用Python脚本的简单示例
    • C#通用邮件发送类分享
    • C#版Windows服务安装卸载小工具

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有