C# 数据类型
数据是程序的必要组成部分,是程序处理的对象。程序处理数据时,并不能人性化地区分数据的内容是什么,因此设计程序时,有必要人为地对数据进行分类,使数据得到高效地处理。而C#作为一种典型的高级编程语言,同样会根据数据的内容和存储方式等特点对数据进行分类处理。
1.整数型
在C#中,整数是不包含小数部分的数字,共包括8种整数类型数据,这8种整数类型数据在内存中占用的内存位数各不相同。在编写C#程序时,可先对所处理的数据进行长度判断,选择符合长度限度的数据类型,从而节省存储数据的空间。
在C#处理整数时,会将整数转换为二进制格式处理,并根据整数的长度再进行细分类。表2-1列出了8种整数数据类型,以及它们占用的内存空间大小和取值范围。
表2-1 整数型数据的数据类型
数据类型 | 说明 | 取值范围(10进制) |
sbyte | 有符号8位整数 | -128(-27)~127(27-1) |
byte | 无符号8位整数 | 0~255(28-1) |
short | 有符号16位整数 | -32768(-215)~32767(215-1) |
ushort | 无符号16位整数 | 0~65535(216-1) |
int | 有符号32位整数 | -2147483648(-231)~2147483647(231-1) |
uint | 无符号32位整数 | 0~4294967295(232-1) |
long | 有符号64位整数 | -9223372036854775808(-263)~9223372036854775807(263-1) |
ulong | 无符号64位整数 | 0~184********709551615(264-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;
在很多编程语言中,可以使用数字0和1分别表示逻辑值false和decimal是整数数据类型true,例如C、C++、JavaScript等。然而在C#中,不允许以数字作为逻辑型数据的值,因此这一方法是错误的。另外,在使用true和false两个值时,必须保证所有字符为小写。 | |
4.字符型
在C#中,字符(char)类型对应的.NET Framework类型为System.Char,用来处理在编程过程中遇到的ASCII字符和Unicode编码字符。字符型数据类型只有一种,即char类型,如表2-3所示。
表2-3 字符型的数据类型
数据类型 | 说明 | 所引用的类 | 示例 |
char | 用于表示单个ASCII或Unicode字符 | 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 = "中华人民共和国" ;
与JScript、JavaScript等弱类型编程语言不同,C#中的字符串类型数据只能以双引号“""”标识,而字符型数据只能以单引号“''”标识,这两种引号不能嵌套使用。 | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论