C#  数据类型
数据是程序的必要组成部分,是程序处理的对象。程序处理数据时,并不能人性化地区分数据的内容是什么,因此设计程序时,有必要人为地对数据进行分类,使数据得到高效地处理。而C#作为一种典型的高级编程语言,同样会根据数据的内容和存储方式等特点对数据进行分类处理。
1.整数型
在C#中,整数是不包含小数部分的数字,共包括8种整数类型数据,这8种整数类型数据在内存中占用的内存位数各不相同。在编写C#程序时,可先对所处理的数据进行长度判断,选择符合长度限度的数据类型,从而节省存储数据的空间。
在C#处理整数时,会将整数转换为二进制格式处理,并根据整数的长度再进行细分类。表2-1列出了8种整数数据类型,以及它们占用的内存空间大小和取值范围。
表2-1  整数型数据的数据类型
数据类型
说明
取值范围(10进制)
sbyte
有符号8位整数
-128-27~12727-1
byte
无符号8位整数
0~25528-1
short
有符号16位整数
-32768-215~32767215-1
ushort
无符号16位整数
0~65535216-1
int
有符号32位整数
-2147483648-231~2147483647231-1
uint
无符号32位整数
0~4294967295232-1
long
有符号64位整数
-9223372036854775808-263~9223372036854775807263-1
ulong
无符号64位整数
0~184********709551615264-1
short整数类型对应的.NET Framework类型为System.Int16,int整数类型对应的.NET Framework类型为System.Int32。数据类型所表示的数字位数与其可容纳的数字数量密切相关。假设一个整数数据类型可表示n位整数,对于有符号整数,其最小值为-2n-1,最大值则为2n-1-1;而对于无符号整数,则其最小值为0,最大值为2n-1,可表示2n个数。
在了解数据类型的取值范围后,可以根据实际所操作的数据大小,选择相应的数据类型,以最大限度节省存储该数据所使用的内存空间。例如,表示一个人的年龄,就可以选择byte数据类型。
2.实数型
实数是数学中的一种概念,在解析几何时,表示数轴上所有点的映射,可以视其为包含整数和小数(有限的和无限的)的所有数字。
而在计算机中,实数又称为浮点数。实数数据有两种表示形式:单精度(float)和双数度(double)。这两者的区别是取值范围和精度不同。计算机对小数的运算效率要远低于整数,所以在精度足够的情况下,尽量使用单精度数。另外,C#还提供了一种专门用于计算
金融和货币方面的数据类型——十进制类型(decimal),其作用如表2-2所示。
表2-2  实数型的数据类型
数据类型
说明
所引用的类
精确位数
float
单精度存储32位浮点值
System.Single
±3.4×1038之间精度小于于1×10-44
double
双精度存储64位浮点值
System.Double
±1.79×10308之间精度小于1×10-323
decimal
十进制存储128位浮点值
System.Decimal
±7.9×1028之间数位不超过228
在实际编写程序时,应在精度足够的情况下尽量使用精度较低的实数型数据,以提高运算效率,降低对内存空间的占用。
在使用十进制实数decimal类型,则应为数字后添加小写m或大写M作为后缀,对数字的精
度作出区分。如果没有添加后缀,则C#会将数字视为双精度实数(double),从而导致编译错误。
而在使用单精度浮点数时,需要在浮点数之后添加一个小写f或大写F作为后缀。在使用双精度浮点数时,则不需要添加后缀。例如,声明三个实数,第一个为单精度,第二个为双精度,第三个为十进制类型,代码如下。
float a = 2.54f ;
double b = 3.14 ;
decimal c = 7.158242631254m ;
3.逻辑型
逻辑型数据又称为布尔型数据,用来表示“真”或“假”的数据类型,对应的.NET Framework类为System.Boolean。在C#中,逻辑型数据只有两个值,即true和false。声明一个逻辑型变量,其方法如下。
bool bl= true ;
bool bx=false;
在很多编程语言中,可以使用数字01分别表示逻辑值falsedecimal是整数数据类型true,例如CC++JavaScript等。然而在C#中,不允许以数字作为逻辑型数据的值,因此这一方法是错误的。另外,在使用truefalse两个值时,必须保证所有字符为小写。
4.字符型
在C#中,字符(char)类型对应的.NET Framework类型为System.Char,用来处理在编程过程中遇到的ASCII字符和Unicode编码字符。字符型数据类型只有一种,即char类型,如表2-3所示。
表2-3  字符型的数据类型
数据类型
说明
所引用的类
示例
char
用于表示单个ASCIIUnicode字符
System.Char
'a'''
ASCII字符是使用7位二进制数字表示的字符,而Unicode字符则是国际标准化组织制订的采取16位二进制编码表示的字符,可以表示全世界绝大多数语言。
在使用char数据类型时,需要注意其值的两侧必须添加单引号“''”,以表示该字符为char字符而非变量名,例如。
Char a=’A’;
char charData= ' 中 ' ;
在C#中输入字符时,如用户需要输入一些特殊的格式化字符,则这些字符往往会导致程序的错误,例如双引号“""”、单引号“''”等,此时,就需要使用转义符功能。转义符是通过斜杠“\”+符号的方式表示特殊字符的一种方式,在表2-4中,列出了C#中的14种转义符。
表2-4  C#的转义符
转义符
作用
转义符
作用
\'
单引号“''”
\"
双引号“""”
\\
斜杠“\”
\0
空字符
\a
警报
\b
Backspace回退
\f
换页符
\n
换行符
\r
回车符
\t
水平制表符
\u
Unicode 转义序列
\U
代理项对的 Unicode 转义序列
\v
垂直制表符
\x
Unicode 转义序列类似于“\u”,只是长度可变
在使用字符型数据时,char类型的数据隐式转换为ushort、int、uint、long、ulong、float、double或decimal等多种整数或实数型数据。此时,数据中的值将为字符在ASCII或Unicode码中的码元。使用这种方法,可以快速获取某个字符的Unicode码元,例如获取中文字符“汉”的码元,代码如下。
char charData = '汉';
int intData = charData;
Console.WriteLine(intData);
除以上几种数据类型外,值类型数据还包括枚举、结构等,这些数据类型将在之后的小节中详细介绍。
在之前介绍的均为值类型数据中,往往存储有实际的数据值。而下面再来了解一下引用类型,其本身不存储数据值,而是存储对这些实际数据的引用(地址)。当一个数值保存到一个值类型数据中以后,该数值将被赋值到值类型的变量中。而当一个数值被赋予到一个
引用类型时,则仅仅是引用(保存数值的变量地址)被赋值,而十几只仍然保留在原内存位置。
C#的引用类型主要包括类类型(class)、字符串类型(string)、数组类型([])、接口类型(interface)和委托类型(delegate)等。由于这些类型比较复杂,且涉及到很多面向对象设计方面的知识,因此除字符串类型(string)以外,其他的几种数据类型在之后相关的章节中将逐个进行介绍。
字符串类型数据是一种最简单的引用类型数据,其本身相当于多个字符类型数据构成的集合。在C#中,字符串数据类型可以存储包含大小写英文字母、汉字、数字和特殊符号的转义符等多种字符。
声明一个字符串类型的数据,就是在内存中创建一个空的引用关系,而初始化一个字符串类型的数据,就相当于引用多个字符类型的数据,其方法如下所示。
string StringName = Value;
在上面的代码中,StringName为字符串型数据的名称,Value为该数据的引用集合。通常在书写字符串型数据时,需要在字符串引用两侧添加双引号“""”,代码如下。
string strData = "中华人民共和国" ;
JScriptJavaScript等弱类型编程语言不同,C#中的字符串类型数据只能以双引号“""”标识,而字符型数据只能以单引号“''”标识,这两种引号不能嵌套使用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。