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