C#程序是一组类型声明,因此学习C#就是学习如何创建和使用类型。
成员的类别:数据成员和函数成员。
数据成员:保存了与这个类的对象或作为一个整体的类相关的数据。
函数成员:执行代码。函数成员定义类型的行为。预定义类型
所有预定义类型都直接映射到底层的.NET类型。C#的类型名称就是.NET类型的别名,所以使用.NET的类型名称也能很好地符合C#语法,不过并不鼓励这样做。在C#程序中,应该尽量使用C#类型名称而不是.NET类型名称。
除了C#提供的16种预定义类型,还可以创建自己的用户定义类型。有6种类型可以由用户自己创建,他们是:
类类型class
结构类型struct
数组类型array
枚举类型enum
委托类型delegate
接口类型interface
类型的使用:使用预定义类型是一个单步过程,简单的实例化对象即可。使用用户定义类型是一个两步过程,必须先声明类型,然后实例化该类型的对象。
- 栈和堆
栈是一个内存数组,是一个LIFO的数据结构。栈存储几种类型的数据:
某些类型变量的值
程序当前的执行环境
传递给方法的参数
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。 值类型和引用类型
非对象的成员的数据存储:值类型只需要一段单独的内存,用于存储实际的数据。数据存放在栈里。
引用类型需要两段内存。第一段存储实际的数据,它总是位于堆中。第二段是 一个引用,指向数据在堆中的存放位置。实际数据放在堆里而引用存放在栈里。
对象的成员的数据存储:引用类型对象的数据部分始终存放在堆里。
值类型对象,或引用类型数据的引用部分可以存放在堆里,也可以存放在栈里。这依赖于实际环境。
对于引用类型的任何对象, 类型还是引用类型。比如class,典型的引用类型。
C#类型的分类
- 变量
程序存取数据通过变量来实现。
变量是一个名称,表示程序执行时存储在内存中数据。
C#提供了4种变量,每一种都将详细讨论。
变量声明定义了变量,并完成了两件事:
给变量命名,并为它关联一种类型;
让编译器为它分配一块内存。