正好整理了以前的笔记就发现了这个就过来说说~~~~~~~~~~
在C#语言中,符合公共语言规范(CLS)的数据类型可分为两类:值类型和引用类型。这两者有很大的区别,其中值类型变量直接保存变量的值,引用类型的变量保存的是数据的引用地址。当把一个值变量赋给另一个值变量,会在堆栈中保存两个完全相同的值,每个变量都有自己的值,因此对一个变量的操作不会影响到其他变量;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一堆位置的两个引用,对一个变量的数据进行操作就是对这个变量在堆栈中的数据进行操作,另一个变量也跟着改变。
1、值类型:
(1)简单类型:是由一系列元素构成数据类型。(整数、布尔、字符、实数)
①整数类型:
sbyte 有符号8位整数 在-128到127之间
byte 无符号8位整数 在0到255之间
short 有符号16位整数 在-32768至32767之间
ushort 无符号16位整数 在0到65535之间
int 有符号32位整数 在-2147483648到2147483647之间
uint 无符号32位整数 在0到4294967625之间
long 有符号64位整数 在-.........到.........之间
ulong 无符号64位整数 在0到.........之间
(2)布尔类型:在其它整数类型和布尔类型之间不存在任何转换。在c#中只存在“true”和“false”的写法。
(3)实数类型:
<1>浮点类型:单精度(float)与双精度(double),其中双精度(double)获得的结果更为精确,但是占用内存单位过大。
取值范围:●单精度:正负1.5*10(-45次方)到3.4*10(38次方)之间,精度为7位数。
●双精度:正负5.0*10(-324次方)到1.7*10(308次方)之间,精度为15到16位数。
<2>十进制类型(decimal):是一种高精度128位数据类型,表示的范围从1.0*10(-28次方)到7.9*10(28次方)的28至29位有效数字。比双精度更精确,但范围很小。
当定义一个decimal变量并赋值给它时,使用m下标以表时它是一个十进制类型。
如:decimal d_value=1.0m
如果省略了m,在变量被赋值之前,它将被编译器当作双精度类型来处理。
④字符类型:通过十六进制转义符(前缀\x)或unicode表示法给字符型变量赋值(前缀\u)。
如:char c='\x0032'; //
char c='\u0032'; //
转义符:
\' 单引号 \'' 双引号 \\ 反斜杠 \o 空字符 \a 感叹号(alert) \b 退格
\f 换 页 \n 新 页 \r 回车 \t 水平(table) \v 垂直(table)
(2)结构类型:把一系列相关的变量组织成为一个单一的实体的过程,这个单一实体的类型就叫结构类型,每个类型称为结构成员。
采用struct来声明结构类型。
结构类型包含的成员没有限制,可以相同,也可以不相同。
(3)枚举类型:为一组在逻辑上密不可分的整数值提供便于记忆的符号。
采用enum来声明枚举类型。
注:按照系统的默认,枚举中的每个元素类型都是int型,且第一个元素删去的值为0,它后面的每个连续的元素的值按加1递增,在枚举中,也可以给元素直接赋值。
如:enum weekday
sunday=1,monday,tuesday,wednesday,...,...,...,
};
为枚举的元素所赋的值的类型限于:long、int、short、byte等整数类型。
2、引用类型
该类型的变量不直接存储所包含的值,而是指向它所要存储的值。
c#中的引用类型有四种:
◆类
◆委托
◆数组
◆接口
(1)类:是面向对象编程的基本单位,是一种包含数据成员、函数成员和嵌套类型的数据结构。
●数据成员:常量、域、事件。
●函数成员:方法、属性、索引指示器、运算符、构造函数、析构函数。
注:类支持继承机制,通过继承,派生类可以扩展基类的数据成员和函数方法,进而达到代码重用和设计重用的目的。
①object类:
是所有其它类型的基类,c#中所有类型都直接或间接地从object类中继承,因此,可以对object的变量赋予任何类型的值。
对object类型的变量声明用object关键字。
②string类:c#还定义了一个基本的类string,专门用于字符串的操作。
(2)委托(delegate):在声明委托时,只需要指定委托指向的原型的类型,它不能有返回值,也不能带有输出类型的参数。
如:delegate int mydelegate();
(3)数组:是一组类型相同的有序数据,数组按照数组名、数据元素的类型和维数来进行描述。
|