第4章 类型、存储和变量 笔记
4.1 C# 程序是一组类型声明
C程序是一组函数和数据类型,C++程序是一组函数和类,
而C#程序是一组类型声明,具有如下特征:
- C# 程序或 DLL 的源代码是一组类型声明
- 类型声明中必须有一个包含 Main 方法的类
- 命名空间是一种将相关的类型声明分组并命名的方法。
代码示例:
c#
// Declare a namespace.
namespace MyProgram
{
// Declare a type.
DeclarationOfTypeA;
// Declare a type.
DeclarationOfTypeB;
// Declare a type.
class C
{
static void 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 变量声明
1.变量初始化语句
由一个等号 + 一个初始数值组成
int var2 = 17;
2.自动初始化
4.9.2 多变量声明
4.9.3 使用变量的值
4.10 静态类型和 dynamic 关键字
- 静态类型:变量的类型在编译的时候确定并且不可更改
- dynamic:动态类型,不会被编译器做类型检查