数组 接口类型 委托类型 .NET技术课程组 技术课程组
8
Logo
2.1.1 值类型 -简单类型举例
注意: 注意:
如果整数是int、 如果整数是 、uint、long、ulong没有任何显示的声 、 、 没有任何显示的声 明,则该变量默认为int型。为了把键入的值指定为其他 则该变量默认为 型 数据类型,可以在数字后面加上如下字符: 数据类型,可以在数字后面加上如下字符:
uint ui=1234U; long l=1234L; ulong ul=1234UL;
如果在代码中没有对某个非整数值( 如果在代码中没有对某个非整数值(如12.3)硬编码, )硬编码, 则编译器一定假设该变量是double,如果想指定值为 则编译器一定假设该变量是 , float或者 或者decimal,也需要在数字后面加字符: 或者 ,也需要在数字后面加字符:
float f=12.3F; decimal d=12.30M
.NET技术课程组 技术课程组
Logo
2.1.1 值类型
例如: 例如: int iNum=10; 分配一个32位内存区域给变量iNum 32位内存区域给变量iNum, // 分配一个32位内存区域给变量iNum, 并将10 10放入该内存区域 并将10放入该内存区域 从变量iNum中取出值,加上10 iNum中取出值 10, // 从变量iNum中取出值,加上10, 再将计算结果赋给iNum iNum。 再将计算结果赋给iNum。
iNum
iNum=iNum+10;
iNum
写 10
读 10
写 20
10+10
20
.
NET技术课程组 技术
课程组
Logo
2.1.2 引用类型
引用类型与值类型相比,引用类型不存储实际数据, 引用类型与值类型相比,引用类型不存储实际数据, 而存储实际数据的引用(即地址) 而存储实际数据的引用(即地址)。 C#提供了以下几种引用类型: C#提供了以下几种
引用类型: 提供了以下几种引用类型 object类型:所有值类型和引用类型的根类 类型: 类型 string类型:从object类直接继承的密封类型 类型: 类型 类直接继承的密封类型 数组 类 接口类型 委托类型
.NET技术课程组 技术课程组
11
Logo
2.1.2 引用类型
例如: 例如: string s1, s2; s1="ABCD"; s2 = s1; 其中,s1,s2是指向字符串的引用变量 s1的值是字符 是指向字符串的引用变量, 其中,s1,s2是指向字符串的引用变量,s1的值是字符 ABCD”存放在内存的地址 这就是对字符串的引用, 存放在内存的地址, 串“ABCD”存放在内存的地址,这就是对字符串的引用,两个 引用型变量之间的赋值,使得s2 s1都是对 ABCD”的引用 s2、 都是对“ 的引用。 引用型变量之间的赋值,使得s2、s1都是对“ABCD”的引用。 s1 s2
栈内存
ABCD
堆内存
.NET技术课程组 技术课程组
Logo
2.1.2 引用类型
类 – 类是对一系列具有相同性质的对象的抽象,是对对象共同特 类是对一系列具有相同性质的对象的抽象, 征的描述, 征的描述,是一组具有相同数据结构和相同操作的对象的集 合。 接口 – 接口是对一组能够提供相同服务的类的抽象,是一种特殊的 接口是对一组能够提供相同服务的类的抽象, 不实现任何方法或属性, 类,不实现任何方法或属性,只定义要完成什么任务而不定 义如何完成。 义如何完成。 委托 – 委托类似于C和C++等编程语言中的函数指针,用于封装某个 委托类似于C C++等编程语言中的函数指针 等编程语言中的函数指针, 方法的调用过程。但在C# C#中 委托是完全面向对象的, 方法的调用过程。但在C#中,委托是完全面向对象的,它所 封装的方法必须与某个类或对象相关联。 封装的方法必须与某个类或对象相关联。
.NET技术课程组 技术课程组
Logo
2.1.3 值类型和引用类型的关系
区别一: 区别一: 值类型是当将一个数值保存到一个值类型变量 值类型是当将一个数值保存到一个值类型变量 该数值实际上复制到变量中; 后,该数值实际上复制到变量中; 引用类型是把一个值赋值给一个引用类型时, 引用类型是把一个值赋值给一个引用类型时, 是把一个值赋值给一个引用类型时 仅是引用(保存数值的变量地址)被复制, 仅是引用