1)委托类型
基本理解:
- 类型安全的函数指针。
- 可以间接完成某种操作,虽增加了复杂性,但也增加了灵活性。
- 可以看作方法的占位符。
为什么要用委托:
- 可以传递函数意味着可以将业务逻辑作为参数传递。
- 间接调用
- 想要执行某些操作,但无需知道操作细节(Thread类)
2)C#1的类型系统是静态的,显式的和安全的
- 静态--编译器知道你能使用哪些成员
- 显式--必须告诉编译器变量具有什么类型
- 安全--除非存在真实的转换关系,否则不能将一种类型当作另一种类型
值类型和引用类型
类(使用class声明)是引用类型,而结构(使用struct声明)是值类型。
- 数组类型是引用类型,即使元素类型是值类型。
- 枚举(使用enum声明)是值类型。
- 委托类型(使用delegate声明)是引用类型。
- 接口类型(使用interface声明)是引用类型,但可由值类型实现。
值类型与引用类型的区别
- 值类型的变量再它声明时的位置存储,引用类型总是在堆中。
- 值类型的实例值总是存储在实例本身存储的地方,引用类型的实例存储的是一个引用。
- 值类型不能派生出其他类型。
- 引用类型有同步块索引,类型指针,需要GC回收。
- 赋值时,值类型是创建一个副本,引用类型是指向同一块内存区域。
装箱和拆箱
装箱机制:允许根据值类型创建一个对象,然后使用这个新对象的一个引用。
装箱场景
- 需要引用类型的地方用值类型’
- 值类型调用基类方法时
- 将值类型作为接口表达式使用时(把它赋给一个接口类型的变量,或者把它作为接口类型的参数来传递)
原文地址:https://www.cnblogs.com/tWX173908/p/7197844.html
时间: 2024-10-03 07:25:43