第4章_数据转换.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章_数据转换,数据结构第三章答案,数据库第三章习题答案,第二十章数据的分析,数据结构第二章答案,数据结构第三章,刻章字体在线转换,印章字体在线转换,篆书印章在线转换,印章转换器在线转换

第4章 数据转换 本章要点 4.1 什么是转换 4.2 隐式转换 4.3 显式转换和强制转换 4.4 数字的转换 4.5 装箱转换 4.6 拆箱转换 4.7 is运算符 4.8 as运算符 4.9 string与其他数据类型相互转换 4.1 什么是转换 要理解什么是转换,先从声明两个不同类型的变量,然后把一个变量(源)的值赋值给另外一个变量(目标)的简单示例开始。在赋值之前,源的值必须转换成目标类型的值。 4.1 什么是转换 转换(conversion)是接受一个类型的值并使用它作为另一个类型的等价值的过程。 转换后的值应和源值是一样的,但它是目标类型。 4.1 什么是转换 4.2 隐式转换 有些类型的转换不会丢失数据或精度。例如,在不丢失数据的情况下,很容易把8位的值转换为16位的值。 语言会自动做这些转换,这叫做隐式转换 从位数更少的源转换为位数更多的目标类型时,目标中多出来的位需要用0或1填充 当从更小的无符号类型转换为更大的无符号类型时,目标类型多出来的最高位都以0进行填充,这叫做零扩展 4.2 隐式转换 对于有符号类型的转换而言,额外的高位用源表达式的符号位进行填充。这样就维持了被转换的值的正确符号和大小,这叫做符号扩展 4.3 显式转换和强制转换 如果要把短类型转换为长类型,对于长类型来说,保存所有短类型的字符很简单。然而,在其他情况下,目标类型也许不能在不损失数据的情况下提供源值。 4.3 显式转换和强制转换 强制转换: 对于预定义的类型,C#会自动将一个数据类型转换为另一个数据类型,但只是针对那些从源类型到目标类型不会发生数据丢失的情况。也就是说,对于源类型的任意值在被转换成目标类型时会丢失值的情况下,语言是不会提供这两种类型的自动转换。如果希望对这样的类型进行转换,就必须使用显式转换,这叫做强制转换表达式。 4.3 显式转换和强制转换 强制转换表达式的构成如下: 包含目标类型的一组配对圆括号 圆括号后是源表达式 4.3 显式转换和强制转换 如果要使用强制转换表达式,就意味着要承担执行操作可能会引起的丢失数据的责任。从本质上说:“不管是否会发生数据丢失,要知道在做什么”。 4.4 数字的转换 任何数字类型都可以转换成其他数字类型。一些转换是隐式的,而另外一些转换是显式的。 4.5 装箱转换 包括值类型在内的所有C#类型都派生自object类型。然而,值类型是高效轻量的类型,因为默认情况下在堆上不包括它们的对象组件。然而,如果需要对象组件,可以使用装箱(boxing)。装箱是一种接受值类型的值,根据这个值在堆上创建一个完整的引用类型并返回对象引用的隐式转换。 4.5 装箱转换 4.5 装箱转换 装箱创建一份副本: 一个有关装箱的普遍误解是在被装箱的项上发生了一些操作。其实不是,它返回了副本的值的引用类型。在装箱发生之后,有两份值---原始值类型和副本的引用类型,每一个都可以独立操作。 4.5 装箱转换 4.6 拆箱转换 拆箱(unboxing)是把装箱后的对象转换回值类型的过程。 拆箱是显式转换 系统在把值拆箱成ValueTypeT时执行了如下的步骤: 检测到要拆箱的对象实际是ValueTypeT的装箱值 把对象的值复制到变量 4.6 拆箱转换 如下给出了拆箱一个值的示例: 值类型变量i被装箱并且赋值给引用类型变量oi 变量oi然后被拆箱,它的值被赋值给值类型变量i 例子:BoxingUnboxing.sln 4.7 is运算符 有些转换的请求是不成功的,并且会运行时抛出一个InvalidCastException异常。这时,可以使用is运算符来检查转换是否会成功完成,从而避免盲目尝试转换。 is运算符的语法如下,Expr是源表达式: 4.7 is运算符 如果Expr可以通过以下方式被成功转成目标类型,运算符返回true: 引用转换 装箱转换 拆箱转换 例子:IsOperator.sln 4.8 as运算符 as运算符和强制转换运算符类似,只是它不抛出异常。如果转换失败,它把目标引用设置为null而不是抛出异常。 as运算符的语法如下,其中: Expr是源表达式 TargetType是目标类型,它必须是引用类型 4.8 as运算符 由于as运算符返回引用表达式,它可以用作赋值中的源。 例子:AsOperator.sln C# C# C# * C# C# 程序设计教程 C# C# C#

文档评论(0)

mydoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档