C#类型转换之初级篇(1)
来源:互联网 发布:c语言或者符号 编辑:程序博客网 时间:2024/05/01 10:41
【导读】学过编程的朋友都知道类型转换,并且也都清楚“隐式转换”、“显式转换”、“装箱”、“拆箱”等概念。但是,类型转换究竟有多少种?如何对其进行划分?何时应该使用何种类型转换?
类型转换的分类
学过编程的朋友都知道类型转换,并且也都清楚“隐式转换”、“显式转换”、“装箱”、“拆箱”等概念。但是,类型转换究竟有多少种?如何对其进行划分?何时应该使用何种类型转换?
本文将就这些问题进行一个简要解释。需要说明的是,本文中的几乎所有内容都来自我在讲课过程中的积累,在此强烈感谢我的学员,尤其是对我的看法提出疑问和建议的学员!另外,本文不一定对您的实际编程工作有太多帮助,不过可以让您对类型转换有一个新的理解。
1、相关概念
类型转换发生的时机 (Occasion)——当发生值的复制时,可能会发生类型转换。所谓“值的复制”,包括赋值运算和方法传参。如果被赋值的变量或方法的形式参数的类型与实际的对象类型不同,就需要进行类型转换。
下面给出两种发生类型转换的情况。
1
2
3
4
5
6
7
8
9
10
12
13
源类型 (Source Type) 和目标类型 (Destination Type) ——当发生类型转换时,被赋值的变量或方法的形参的类型称为目标类型,而实际的对象的类型称为源类型。
例如前面例1中,变量x的类型int是源类型,而变量y的类型long是目标类型;例2中,变量i的类型int是源类型,而方法F的形参var的类型long是目标类型。
2、类型转换的分类
C#中的类型转换有两种分类方法,一种是根据转换方式的不同进行划分,可以分为显式 (Explicit) 转换和隐式 (Implicit) 转换两种;另外一种是根据源类型和目标类型之间的关系进行划分,可以分为变换 (Conversion)、投射 (Cast)和装箱/拆箱 (Boxing/Unboxing)。
2.1 显式转换和隐式转换
从直观上看,显式和隐式转换只是语法上面的差别。当发生类型转换时,如果在代码中明确指定了目标类型,则称为显式转换,否则则称为隐式转换。
C#通过将形如“(目标类型)”这样的语法构造放在待转换对象的前面,来表示一个显式转换。
下面的代码介绍了在C#语言中进行显式和隐式转换时的语法。
int x = 10;
long y = x; // 隐式转换
x = (int) long; // 显示转换
需要注意的是,不是任意两种类型之间都能随意进行转换的。另外,无论显式转换还是隐式转换,都可能会失败。
如果显式转换失败,会在运行时抛出异常(这个异常可能是InvalidCastException,也可能是InvalidOperationException、OverflowException等具体异常);如果隐式转换失败,则会在编译时得到一个错误,指出不能进行隐式转换。
最后,隐式转换也可以用显式转换替代,但显式转换不能用隐式转换替代。换句话说,可以用显式转换的地方,用隐式转换也没什么问题;但需要显式转换的地方,就一定不能用隐式转换。
下面将从另外一种角度介绍各种不同的类型转换。
- C#类型转换之初级篇(1)
- c++初级 之 类型转换
- C#初级篇---类型转换、枚举、结构体、数组、函数、
- C#之初级篇
- C#之类型转换
- c#之类型转换
- C#之类型转换
- C#日积月累之类型转换
- c#之类型转换2
- C#基础之类型转换
- 算法学习之旅,初级篇(1)--大小写转换
- java 初级类型转换问题
- C#之学习7 类型转换
- C#知识点之变量,类型及类型转换--------3
- C#的类型转换(1)之隐式和显式转换
- C#初级入门之---读
- 温故而知新(1)——C#类型转换
- C#中的类型转换
- ASCII表
- 百度快照又不能用了,生气!
- 如何在 Windows 中安装或删除字体
- BLOG的第一篇文字
- 我的记事本(vb编写的)
- C#类型转换之初级篇(1)
- 读 APUE 文件权限发现以前忽略的一些地方
- 从一段代码看Google的远大野心
- EJB原理之(一)---引子
- [刘干]蒙牛总裁牛根生的交际之道
- 概念设计.逻辑设计.物理设计.的简单说明
- 颜色空间转换
- Google 以外的17个搜索引擎创新(zt)
- 有没有在富士康工作的朋友?介绍一下情况,好吗?