C#的数据类型

刘鑫婷 2019-07-17 08:51:55
C#中的数据类型主要分为两大类,它们分别是值类型和引用类型。
一、值类型
1、C#中的值类型分为简单类型、结构类型和枚举类型。其中的简单类型又包括了整数类型、浮点类型、小数类型和布尔类型。
2、整数类型的数值只能是整数。我们要知道,虽然数学上的整数可以是负无穷大到正无穷大,但是因为计算机的存储单元是有限的,所以计算机语言里提供的数据类型都是有一定范围的。
3、在C#中,提供了八种整数类型,它们如下所示:
(1)sbyte表示8位有符号整数,它的取值范围是-128~+127;
(2)byte表示8位无符号整数,它的取值范围是0~255;
(3)short表示16位有符号整数,它的取值范围是-32768~+32767;
(4)ushort表示16位无符号整型,它的取值范围是0~65535;
(5)int表示 32位有符号整形,它的取值范围是-2147483648~+2147483647;
(6)uint表示32位无符号整型,它的取值范围是0~232-1;
(7)long表示64位有符号整形,它的取值范围是-9223372036854775805~+9223372036854775807;
(8)ulong表示64位无符号整形,它的取值范围是0~264-1。
4、小数在C#中是使用浮点类型的数据来表示的,而C#中的浮点类型分为两种,即单精度的浮点型float和双精度的浮点型double。它们分别使用32位单精度和64位双精度的IEEE 754格式表示。他们的区别在于取值范围和精度的不同。
5、数据的精度越高对计算机的要求也就越大,因此,对精度要求不高时我们应使用单精度类型,而在精度要求较高时使用双精度类型。float表示32位宽,7位精度,取值范围是1.5 × 10-45至3.4×1038。double表示64位宽,15~16位精度,它的取值范围是5.0×10-324至1.7×10308。
6、小数(decimal)类型是128位的高精度的数据类型,适用于财务计算和金融计算机邻域。它的精度为29位,取值范围是1.0×10-28至7.9×1028。我们要注意的是:小数类型数据的后面必须跟m或者M后缀,以表明其为decimal类型,否则就会被解释成标准的浮点类型数据,从而导致数据类型的不匹配。
7、C# 中的字符类型是根据国际公认标准采用Unicode字符集的。Unicode字符集可以用来表示世界上大部分的语言种类。所有Unicode字符的集合构成字符类型。字符类型的标识符是char,因此其也称为char类型。
8、凡是在单引号中的一个字符,就是一个字符常数;如:‘a’、‘0’、‘*’;但我们在表示一个字符常数时,单引号内的有效字符数量必须有且只有一个,而且单引号内的字符不能是单引号或者是反斜杠(\)。
9、C# 的布尔类型(bool)用于表示逻辑真和逻辑假。它的常数只有true和false。
二、引用类型
1、引用类型存储的数据是当前引用值得地址。引用类型数据的值会随其所指向的值的不同而变化;同一个数据可以有多个引用。C#中的引用类型分为四种,它们分别是类类型、接口类型、数组类型和委托类型。
2、object类是系统提供的基类型,它是所有类型的基类。即C#中所有的类型都直接或间接派生于对象类型。因此object变量可以赋以任何类型的值,但它在声明时必须使用object关键字。
3、string类是专门用于对字符串进行操作的。一个字符串就是被双引号包含的一系列字符;例如:“中国文化源远流长。”字符串在实际应用中是非常广泛且它们之间的运算是非常方便的。
4、C#支持两种形式的字符串常数,分别是常规字符串常数及逐字字符串常数。一个常规字符串常数就是放在双引号间的一串字符。例如:”Turn right at the intersection.”; 一个字符串常数能包含一个或多个转义符。例如:Console.WriteLine(First\0你好\a123\t**\t);
5、逐字字符串常数的写法是以@开头,在@后跟一对双引号,在双引号中写入字符。例如:@“计算机应用”。我们要注意:逐字字符串常数是没有转义字符的,它的每个字符都表示其最原始的意义。即逐字字符串常数双引号内的内容在被接受时是不变的,且可跨越多行。
6、逐字字符串常数唯一的例外是:如果要包含双引号,就必须在一行中使用两个双引号。例如:@”She said \t ””Hello””to you;”返回的是 She said \t ”Hello”to you; 。也就是说,常规字符串会对转义符进行解释,但逐字字符串除了对双引号进行解释外,对其他的字符是原样返回的。
三、区别及C#默认数值类型的方式
1、值类型的变量直接包含他们的数据;而引用类型的变量是存储对他们的数据的引用,即对象。
2、对一个变量的操作是否能影响到另一个变量也是区别之一。
(1)是,则说明为引用类型,因为它的两个变量可以引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。
(2)否,则说明为值类型,因为值类型的每个变量都有它们自己的数据副本(除 ref 和 out 参数变量外),因此对一个变量的操作不可能影响另一个变量。
3、值类型是直接赋值的,如:Int i = 1;而引用类型是创建对象,对对象成员赋值的。如:
var myarray=new Array();是创建数组对象;而myarray[0]=70;是对对象成员赋值。
4、在程序中书写一个十进制的数值常数时,C#会默认按如下方法判断一个数值常数数据属于哪种C#数值类型。
(1)如果一个数值常数不带小数点,则这个常数的类型是整形。而对于一个属于整形的数值常数,C#按如下顺序判断该常数的类型:int,uint,long,ulong。
(2)如果一个数值常数带小数点,则这个常数的类型是浮点型中的double类型。
5、如果不想C#使用默认的方式来判断一个十进制数值常数的类型的话,可以通过给数值常数加后缀的方法来指定数值常数的类型。可以使用的数值常数后缀有以下几种:
(1)u(或者U)后缀:加在整型常数后面,代表该常数是uint类型或者ulong类型。具体是其中的哪一种由常数的实际值决定。C#优先匹配uint类型。
(2)l(或者L)后缀:加在整型常数后面,代表该常数是long类型或者ulong类型。具体是其中的哪一种由常数的实际值决定。C#优先匹配long类型。
(3)ul后缀:加在整型常数后面,代表该常数是ulong类型。
(4)f(或者F)后缀:加在任何一种数值常数后面,代表该常数是float类型。
(5)d(或者D)后缀:加在任何一种数值常数后面,代表该常数是double类型。
(6)m(或者M)后缀:加在任何一种数值常数后面,代表该常数是decimal类型。
6、如果一个数值常数超过了该数值常数的类型的所能表示的范围,那么C#在对程序进行编译时,将给出错误信息。






...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

488

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧