C#基础学习--转换

目录

什么是转换

隐式转换

显式转换和强制转换

​编辑

转换的类型

数字的转换

​编辑 隐式数字转换

溢出检测上下文

显式数字转换 

引用转换

 隐式引用转换

显式引用转换

有效显式引用转换

装箱转换

装箱是创建副本

装箱转换

拆箱转换

 用户自定义转换

用户自定义转换的约束

 is 运算符

 as 运算符


什么是转换

隐式转换

有些类型的转换不会丢失数据或精度。

显式转换和强制转换

C#基础学习--转换_第1张图片

如果使用强制类型转换,就意味着要承担执行操作可能引起的丢失数据的后果

转换的类型

C#基础学习--转换_第2张图片

数字的转换

C#基础学习--转换_第3张图片 隐式数字转换

C#基础学习--转换_第4张图片

 没有路径的就是需要显式转换,有路径的就是可以隐式转换

溢出检测上下文

C#基础学习--转换_第5张图片

C#基础学习--转换_第6张图片

显式数字转换 

C#基础学习--转换_第7张图片

 虚线路径表示显式转换

C#基础学习--转换_第8张图片

C#基础学习--转换_第9张图片

C#基础学习--转换_第10张图片

C#基础学习--转换_第11张图片

C#基础学习--转换_第12张图片

引用转换

引用类型对象由内存中的两部分组成:引用和数据

C#基础学习--转换_第13张图片

 隐式引用转换

所有的引用类型可以隐式转换成object 类型

任何类型可以隐式转换到它继承的接口

类可以隐式转换到  :    他继承链中的任何类,它实现的任何接口

C#基础学习--转换_第14张图片

显式引用转换

显式引用转换是从一个普通类型到一个更精确类型的引用转换

显式转换包括:   从object到任何引用类型的转换      从基类到从它继承的类的转换

有效显式引用转换

C#基础学习--转换_第15张图片

C#基础学习--转换_第16张图片

装箱转换

包括值类型在内的所有C#类型都派生自 object 类型。默认情况下在堆上不包括它们的对象组件,如果需要对象组件,可以通过装箱。装箱是一种隐式转换,它接受值类型的值,根据这个值在堆上创建一个完整的引用类型对象并返回对象引用

C#基础学习--转换_第17张图片

装箱是创建副本

返回的是值的引用类型的副本,在装箱产生后,该值有两份副本--原始值类型和引用类型副本,每一个都可以独立操作

装箱转换

C#基础学习--转换_第18张图片

拆箱转换

拆箱是把装箱后的对象转换回值类型的过程

C#基础学习--转换_第19张图片

 用户自定义转换

C#基础学习--转换_第20张图片

用户自定义转换的约束

C#基础学习--转换_第21张图片

 多步转换:

C#基础学习--转换_第22张图片

 is 运算符

有些转换是不成功的,并且会在运行时抛出一个InvalidCastException异常,我们可以使用is运算符来检查转换是否会成功

Expr  是源表达式

C#基础学习--转换_第23张图片

 as 运算符

as 运算符和强制运算符类似,只是它不抛出异常,如果转换失败,它返回null 而不是抛出异常

C#基础学习--转换_第24张图片

 

你可能感兴趣的:(C#,C#)