图解C#教程 第五版 第4章 类型、存储和变量 笔记

第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:动态类型,不会被编译器做类型检查

4.11 可空类型