文章目录
- 4.1 C# 程序是一组类型声明
- 4.2 类型是一种模板(*)
- 4.3 实例化类型
- 4.4 数据成员和函数成员
- 4.5 预定义类型
- 4.6 用户定义类型
- 4.7 堆和栈(*)
- 4.8 值类型和引用类型
- 4.9 变量
- 4.9.1 变量声明
- 4.9.2 多变量声明(*)
- 4.9.3 使用变量的值(*)
- 4.10 静态类型和 dynamic 关键字
- 4.11 可空类型(*)
4.1 C# 程序是一组类型声明
- C# 程序或 DLL 的源代码是一组类型声明
- 类型声明中必须包含 Main 方法的类
4.2 类型是一种模板(*)
4.3 实例化类型
C# 程序中,每个数据项都是某种类型的实例。
4.4 数据成员和函数成员
- 数据成员:保存了类对象或整个类的相关数据。
- 函数成员:执行代码,定义类型的行为。
4.5 预定义类型
C# 中,数值类型不具有布尔意义。
所有预定义类型都直接映射到底层的 .NET 类型,C# 的类型名称就是 .NET 类型的别名。
应尽量使用 C# 类型名称而不是 .NET 类型名称。
4.6 用户定义类型
C# 中可创建的 6 中用户类型:
- 类(class)
- 结构(struct)
- 数组(array)
- 枚举(enum)
- 委托(delegate)
- 接口(interface)
4.7 堆和栈(*)
4.8 值类型和引用类型
-
值类型:需要一段单独的内存
- 用于存储实际数据
-
引用类型:需要两段内存
- 第一段存储实际数据,位于堆中
- 第二段是一个引用,指向堆中的数据
4.9 变量
4.9.1 变量声明
- 变量初始化语句
无初始化语句的局部变量有一个未定义的值,在赋值之前不能使用。
-
自动初始化
一些类型的变量在声明时如果没有初始化语句,会被自动赋值,而另一些则不能。表 4.5 展示了这些情况。
4.9.2 多变量声明(*)
4.9.3 使用变量的值(*)
4.10 静态类型和 dynamic 关键字
- 静态类型:变量的类型在编译的时候确定并且不可更改
- dynamic:动态类型,不会被编译器做类型检查