40.C#中的值类型和引用类型

  1. 40.CSharp中的值类型和引用类型
    1. 40.1 题目
    2. 40.2 深入解析
    3. 40.3 答题示例
      1. 值类型
      2. 引用类型
    4. 40.4 关键词联想

40.CSharp中的值类型和引用类型


40.1 题目

C#中哪些变量类型是值类型(至少说出13种),哪些是引用类型(至少说出5种)


40.2 深入解析

值类型struct、枚举、基础类型等)实例通常内联在栈、结构体字段或数组元素中,赋值常表现为按位拷贝,生命周期与作用域绑定更紧;引用类型class、数组、string 等)实例在托管堆上分配,变量里存的是引用,赋值拷贝的是引用而非完整对象。

面试中常追问:默认传参方式、装箱、ref/out、可变 struct 的坑(如反复拷贝导致修改丢失)。游戏开发里,热路径上大量小数据用 struct、池化引用对象,是常见优化方向。


40.3 答题示例

值类型

在C#中,以下是常见的值类型:

  1. int
  2. float
  3. double
  4. byte
  5. short
  6. long
  7. uint
  8. ulong
  9. ushort
  10. sbyte
  11. decimal
  12. char
  13. bool
  14. 自定义结构体(struct)

引用类型

在C#中,以下是常见的引用类型:

  1. 自定义类(class)
  2. 数组(array)
  3. 字符串(string)
  4. 委托(delegate)
  5. 接口(interface)
  6. Object(万物之父)

值类型实例通常内联在栈帧、字段或数组元素中;引用类型对象一般在托管堆上,变量里是引用。具体位置以编译器与上下文为准,不宜简单说“值类型永远在栈上”。


40.4 关键词联想

  • 值类型 / 引用类型
  • 栈与托管堆
  • 装箱(Boxing)
  • struct / class
  • ref / out
  • 内存布局与拷贝语义


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏