【深入理解C#】第2章 C#1所搭建的核心基础

1)委托类型

基本理解:

  • 类型安全的函数指针。
  • 可以间接完成某种操作,虽增加了复杂性,但也增加了灵活性。
  • 可以看作方法的占位符。

    为什么要用委托:

  • 可以传递函数意味着可以将业务逻辑作为参数传递。
  • 间接调用
  • 想要执行某些操作,但无需知道操作细节(Thread类)

2)C#1的类型系统是静态的,显式的和安全的

  • 静态--编译器知道你能使用哪些成员
  • 显式--必须告诉编译器变量具有什么类型
  • 安全--除非存在真实的转换关系,否则不能将一种类型当作另一种类型

    值类型和引用类型

    类(使用class声明)是引用类型,而结构(使用struct声明)是值类型。

  • 数组类型是引用类型,即使元素类型是值类型。
  • 枚举(使用enum声明)是值类型。
  • 委托类型(使用delegate声明)是引用类型。
  • 接口类型(使用interface声明)是引用类型,但可由值类型实现。

    值类型与引用类型的区别

  • 值类型的变量再它声明时的位置存储,引用类型总是在堆中。
  • 值类型的实例值总是存储在实例本身存储的地方,引用类型的实例存储的是一个引用。
  • 值类型不能派生出其他类型。
  • 引用类型有同步块索引,类型指针,需要GC回收。
  • 赋值时,值类型是创建一个副本,引用类型是指向同一块内存区域。

    装箱和拆箱

    装箱机制:允许根据值类型创建一个对象,然后使用这个新对象的一个引用。

    装箱场景

  • 需要引用类型的地方用值类型’
  • 值类型调用基类方法时
  • 将值类型作为接口表达式使用时(把它赋给一个接口类型的变量,或者把它作为接口类型的参数来传递)

猜你喜欢

转载自www.cnblogs.com/tWX173908/p/7197844.html