《C#程序设计》课程教学中的数据类型转换分析

2014-12-31 03:42姜蕴莉
电脑知识与技术 2014年35期
关键词:数据类型

姜蕴莉

摘要:数据类型是《C#程序设计》课程中的基础理论知识,不同数据类型之间的转换对于初学者是个难点,该文从教学的角度对数据类型转换的各种方法进行归纳、分析。

关键词:C#;数据类型;类型转换

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)35-8457-02

Analysis of the Data Type Conversion in "C# Program Design" Course Teaching

JIANG Yun-li

(Jiangxi Vocational College of Finance and Ecanamics, Jiujiang 332000, China)

Abstract: Data type is a basic theory knowledge of "C# programming" course, the conversion between different data types is a difficulty for beginners, this paper summarized and analyzed the various methods of data type conversion from the perspective of teaching.

Key words: C#; data type; type conversion

利用C#语言进行程序设计时,需要将现实问题抽象为各个类及其相关的数据,这些数据在计算机内部以不同的方式、空间进行存储,成为不同的数据类型。根据在计算机内存中的存储方式和使用规则的不同,C#中的数据可以分为值类型和引用类型,引用类型可分为对象(object)、类、接口、字符串、委托、数组,值类型可分为基本类型、枚举类型、结构类型等,基本类型可分为整数类型、浮点类型、字符类型、布尔类型,整数类型又分为sbyte、byte、short、ushort、int、uint、long、ulong,浮点类型又分为float、double、decimal[1]。不同的数据类型间进行各种运算时需要进行相互转换,对于初学者来说,在近20种数据类型间按照不同的方式、方法进行数据类型转换是容易混淆的,该文对C#程序设计课程在教学过程中的数据类型转换问题进行归纳、分析。

1 数值类型间的转换方式

1.1 隐式转换

默认的、不加声明的转换就是隐式转换。数值类型中的各个子类型在计算机内部的存储形式都相同,只不过是占用的存储空间不同、能够表示的数据大小和精度不同。在数值类型数据的转换中,从小范围、低精度的数据类型向大范围、高精度的数据类型转换时,系统会自动地进行安全的数据类型转换而不造成数据信息的丢失和异常[2]。例如:short类型占用16位的内存空间,能够表示-32768至32767之间的整数,它可以隐式地、不加任何声明地转换成比它范围大、精度高的int、long、float、double、decimal类型。而float类型只能隐式转换为比它范围大、精度高的doubele类型,不能隐式转换为比它范围小、精度高的的decimal类型。

1.2显式转换

需要指明要转换成的数据类型的数据类型转换称为显式转换,显式转换的语法格式是:(目标数据类型标识符)表达式。显示转换也称为强制数据类型转换,可以将范围大或者精度高的数据类型强制转换成范围小、精度低的数据类型,这样的转换有可能造成数据信息的丢失和异常,所以在使用强制数据类型转换时要注意[3]。例如:ushort类型占用16位存储空间,能表示的数据范围为0至65535,byte类型占用8位存储空间,能表示的数据范围为0至255,将大小为0至255的ushort类型数据显式转换为byte类型数据时不会出现异常,而将大小为256至65535之间的ushort类型数据显式转换为byte类型数据时则会发生异常。在这里需要注意的是,目标数据类型标识符和后面的表达式(表达式为单个变量时除外)都需要加上英文的圆括号,例如:“(int)(a+b)”表示将“a+b”转换为int类型,而如果写成“(int)a+b”则表示将x转换成int类型后再与b进行“+”运算。

2 利用Convert类进行不同值类型间的转换

利用Convert类下的各个数据类型转换方法可以将整数类型、浮点类型、Boolean、Char、DateTime、String类型转换成为另一个基本数据类型。可以根据要转换成的目标数据类型来选择Convert类下的相应的方法。例如:要将某个数据类型的数据转换成int类型的数据,就可以选择使用Convert类下面的ToInt32方法,这个方法是将指定的值转换为32位有符号的整数。在转换过程中,如果源数据类型向目标数据类型的转换是无意义的转换,则转换无效、不执行任何转换,例如:从Char类型的数据转换为Boolean类型的数据就是无效的数据类型转换。

3 数值类型与字符串类型间的转换

3.1 利用Parse、TryParse方法将字符串类型转换为数值类型

每个数值类型的数据都拥有一个Parse方法和TryParse方法,用来将数字形式的字符串转化为相应的数值类型。例如:语句“int.Parse(“123”);”可以将字符串类型的数据“123”转换为数值型数据123。在使用Parse方法进行数据类型转换时,转换成功则方法的返回值为要转换成的数据类型值,如果要转换的字符串中包含有除数字和小数点之外的其他不能转换为数值的字符,则转换失败并抛出异常[4]。利用TryParse方法也可以将字符串类型的数据转化为数值型数据,它和Parse方法的区别在于数据类型转换成功,则TryParse方法返回True,转换不成功则返回False,转换成功的结果保存在TryParse方法的最后一个输出值参数中,如果转换失败结果为0并不抛出异常。

3.2 利用ToString方法将数值类型转换为字符串类型

在c#中,有个根类型System.Object类,其他所有的类型都隐式地派生于该类,并且重写该根类型的 ToString()方法,使得派生于根类型Object的每个数据类型类都具有了一个ToString()方法。ToString()方法可以将数值类型转换成为对应的字符串类型。例如:声明x为int类型的变量并且为其赋值,执行语句“string s=x.ToString();”,这个语句是调用int类型的ToString()方法将int类型的变量x转换为字符串类型,再赋值给字符串类型的变量s。

4 值类型与引用类型间的转换

值类型与引用类型之间的转换可以分别通过装箱和拆箱来完成。将一个引用类型转换为数值类型就称为拆箱,而相反地将一个数值类型的数据转化为引用类型则称为装箱。例如:声明一个int类型变量x并为其赋值,执行语句“object o=x;”,这个语句就是一个装箱的操作,将值类型变量x装箱为object类型数据之后再复制给“=”号左侧的对象o。再例如:声明一个object类型变量o并为其赋值,执行语句“int y=(int)o;”,这个语句就是一个拆箱的操作,将对象类型变量o拆箱为int类型数据之后再复制给“=”号左侧的int类型变量y。

5 利用as关键词完成引用类型的转换

利用as关键词可以将某种类型的数据转换成为另外一种引用类型的数据,当转换失败时不引发异常只返回空值。语法格式为:expression as type,这里的type只能是引用类型[5]。实际上,利用as完成的转换可以看作是引用类型的强制类型转换。例如:s是student类型的对象,m是master类型的对象,则语句“s=m as student”就是利用as关键词将master类型的变量m强制转换为student类型。

6 数据类型的其他转换技巧

6.1 字符串与数值混合表达式

当两个数值型数据进行“+”运算时视作做加法;当两个字符串进行“+”运算时视作将两个字符串进行连接运算,成为一个新的字符串;当一个字符串类型的数据与一个数值类型的数据进行“+”运算时,系统会自动地将数值型数据转换成相应的字符串类型数据,然后再与原来的另一个字符串数据进行字符串连接运算,生成一个新的字符串。例如:在表达式“"中国"+2014”中,系统将数值型数据2014转换成字符串类型再与字符串“中国”进行连接运算,最后生成新的字符串“中国2014”。

6.2 加后缀

在程序设计过程中,很多数据都可以采用多种数据类型来存储,例如:数字3.14分别可以用float、double、decimal类型来存储,而double类型是默认的带小数的类型,如果希望将3.14表示为float类型,则只需要在3.14后面加上float类型名的后缀“f”,则“3.14f”就表示是一个float类型的3.14了。常见的数据类型及其对应的后缀名有:uint、ulog类型的后缀名为U或u;long、ulong类型的后缀名为L或者l;ulong类型的后缀名为ul、uL、Ul、UL、lu、Lu、lU或者LU;float类型的后缀名为f或者F;double类型的后缀名为D或者d;decimal类型的后缀名为M或者m。

7 结束语

在C#程序设计课程的教学过程中,数据类型及数据类型转换部分的知识是该课程的基础语法知识,是后续知识的基石。C#语言中的数据类型繁多,在程序设计过程中会经常涉及到数据类型之间的相互转换,对于初学者容易混淆。该文针对这些问题,描述了C#语言中的数据类型转换的各种规则、方法,并给出各种方法使用时的注意事项。

参考文献:

[1] 崔晓军.C#.NET程序设计案例教程[M].清华大学出版社,2013.

[2] 侯传宇.论C语言教学中数据类型转换的问题[J].巢湖学院学报,2008(3).

[3] 戴敏.C#程序开发实用教程[B].清华大学出版社,2013.

[4] 徐卫英.C#语言中数据类型转换的应用探讨[J].电脑学习,2010(4).

[5] 王国胜.C#基础与案例开发详解[M].清华大学出版社,2009.

猜你喜欢
数据类型
详谈Java中的基本数据类型与引用数据类型
如何理解数据结构中的抽象数据类型
基于数据类型结构观点的C语言中赋值运算教学方法
利用绝对值编码器精确定位垂直螺旋卸车机起升机构的方法
S7—400PLC系统时间设置方法及在炼钢厂中的应用
基于SeisBase模型的地震勘探成果数据管理系统设计
相似度计算及其在数据挖掘中的应用
基于自定义XML数据类型的研究
VB语言的教学方法探讨
浅谈C语言中的常量与变量