一、什么是类型?
1.什么是类型
类型是一种数据结构的模板,它说明了由模板构造的对象的特征。类型定义了存储数据需要的内存空间的大小、对数据的访问方式、数据的存储位置(栈/堆)以及组成该类型的成员。类型包括C#语言提供的预定义类型和用户自定义的类型。
2.类型的元素
类型由名称、用于保存数据成员的数据结构及一些行为和约束条件。下图表示int类型的组成元素。
二、预定义类型
如上图所示,C#提供了16中预定义类型,包括13重简单类型和3种非简单类型。关于预定义类型的几点说明:
1.所有预定义类型的名称全部由小写字母组成。
2.所有预定义类型都直接映射到底层的.Net类型,C#的类型名称其实就是.Net类型的别名。比如 int类型是System.Int32的别名。在语法上来讲,我们在程序中可以直接使用.Net类型,但是实际当中更好的实践是使用C#类型名。
3.object类型是系统中所有其他类型的基类。
三、用户定义类型
C#包括6种用户自定义类型:类(class)、结构(struct)、枚举(enum)、数组(array)、接口(interface)和委托(delegate)。
1.类型声明信息
用户定义类型通过类型声明创建,类型声明包括:
1).类型的种类(关键字),比如class。
2).定义类型的名称,比如MyClass。
3).成员的声明(array和delegate除外,因为它们没有命名成员)。
2.用户定义类型和预定义类型的比较
使用预定义类型只需要实例化类型的对象即可,它是一个单步过程;而用户自定义类型需要先声明,后实例化,所以它是一个两步的过程。
四、值类型和引用类型
1.值类型
值类型只需要一段单独的内存空间,用于存储实际的数据。
2.引用类型
引用类型需要两段内存:第一段用于存储实际的数据,它总是位于内存堆当中;第二段是一个引用,指向数据在堆中的地址。
3.值类型和引用类型的比较
五、类型的总结
六、实例化类型
从某个类型创建实际对象,称为实例化该类型。通过实例化类型而创建的对象称为类型的对象或类型的实例。
实例化类型的示例(假设我已经定义一个类型“DaysTemp")。
1 // 创建类型的实例(类类型的变量),值为null 2 DaysTemp d1; 3 // 为数据分配内存 4 d1 = new DaysTemp(); 5 6 // 创建实例并且分配内存 7 // 使用了对象创建表达式(结合步骤) 8 // 使用了简单写法(类型推断) 【推荐】 9 var d2 = new DaysTemp();
七、成员
1.什么是成员?
包含在类型中的数据项个体就称为成员。成员具有成员名。一个类型中可以包含许多不同类型的成员,比如类类型中包含字段、属性、方法和事件等。
2.成员的类别
成员分为两种:
1).数据成员:保存了与所在类型的对象或类型本身相关的数据。比如class的字段。
2).函数成员:函数成员执行代码,它定义了类型的行为。比如lclass的方法。