目录
3.1 C#程序是一组类型声明
如果广泛的描述C和C++程序源代码的特征,可以说C程序是一组函数和数据类型,C++程序是一组函数和类,然而C#程序是一组类型声明。
- C#程序或DLL的源代码是一组一种或者多种类型声明。
- 对于可执行程序,类型声明中必须有一个包含Main方法的类。
- 命名空间是一种把相关的类型声明分组并命名的方法。既然程序是一组相关的类型声明,那么通常会吧程序声明在你创建的命名空间内部。
列如,下面是一个由3个类型声明组成的程序。这3个类型被声明在一个名称为MyProgram的新命名空间内部。
namespace MyProgram //声明新的命名空间
{
DeclarationOfTypeA //声明类型
DeclarationOfTypeB //声明类型
class C
{
static void Main()
{
}
}
}
3.2 类型是一种模板
既然C#程序就是一组类型声明,那么学习C#就是学习如何创建和使用类型。所以,需要做的第一件事情就是了解什么类型。
可以把类型想象成一个用来创建数据结构的模板。模板本身并不是数据结构,但它详细说明了由该模板构造的对象的特征。
类型由下面的元素定义:
- 名称;
- 用于保存数据成员的数据结构;
- 一些行为以及约束条件。
例如,图3-1阐述了short类型和int类型的组成元素。
3.3 实例化类型
从某个类型模板创建实际的对象,被称为实例化该类型。
- 通过实例化类型而创建的对象被称为类型的对象或类型的示例。这两个术语可以互换。
- 在C#程序中,每个数据项都是某种类型的实例。这些类型可以是语言自带的,可以是BCL或者其他库提供的,也可以是程序员定义的。
图3-2阐述了两种预定义类型对象的实例化。
3.4 数据成员和函数成员
像short、int和long等这样的类型称为简单类型。这种类型只能存储一个数据项。
其他的类型可以存储多个数据项。比如数组(array)类型就可以存储多个同类型的数据项。
这些数据项被称为数组元素。可以通过数字来引用这些元素,这些数字称为索引。数组将会在第12章讲述。
成员的类别
然而另外一些类型可以包含许多不同类型的数据项。这些类型中的数据项个体被称为成员,并且与数组中使用数字来引用成员不同,这些成员具有独特的名称。
有两种成员:数据成员和函数成员。
- 数据成员 保存了与这个类的对象或作为一个整体的类相关的数据。
- 函数成员 执行代码。函数成员定义类型的行为。
例如,图3-3列出了类型XYZ的一些数据成员和函数成员,它包括两个数据成员和两个函数成员。
3.5 预定义类型
C#提供了16种预定义类型,如图3-4所示。他们列在表3-1和表3-2中,其中包括13种简单类型和3种非简单类型。
所有定义类型的名称都由全小写的字母组成。预定义的简单类型包括以下3种。
- 11种数值类型。
- 不同长度的有符号和无符号整数类型。
- 浮点数类型float和double。
- 一种称为decimal的高精度小数类型。与float和double不同,decimal类型可以准确地表示分数。decima类型通常用于货币计算。
- 一种Unicode字符类型char。
- 一种布尔类型bool.bool类型表示布尔值必须为true或false。
3种简单类型如下。
- string 他是一个Unicode字符数组。
- object 他是所有其他类型的基类。
- dynamic 使用动态语言编写的程序集时使用。
预定义类型补充
所有预定义类型都直接映射到底层的.N3.ET