C# 基础——托管类型和非托管类型

在介绍 C# 的托管类型和非托管类型之前,我们先来说说 C# 的类型体系以及各种类型在内存(虚拟内存)中的存储方式。

C# 类型体系

C# 的类型包含以下三大类:

值类型的变量直接包含其数据。对于值类型,每个变量都具有其自己的数据副本,对一个变量执行的操作不会影响另一个变量(in、ref 和 out 参数变量除外;请参阅 inrefout 参数修饰符)。

引用类型的变量存储对其数据(对象)的引用。对于引用类型,两个变量可引用同一对象。因此,对一个变量执行的操作会影响另一个变量所引用的对象。

指针类型不从对象(object)继承,并且指针类型与对象(object)之间不存在转换。 此外,装箱和取消装箱不支持指针。 但是,你可在不同的指针类型之间以及指针类型和整型之间进行转换。

.NET 内存模型:
托管类型

托管类型包括引用类型以及包含有引用类型或托管类型成员的结构

  • 引用类型
  • 含引用类型或托管类型成员(字段、自动实现 get 访问器的属性)的结构(managed structure)
// 托管结构。
public struct Foo { 
      public string Name; // 包含引用类型字段。
      public string Bar { get; private set; } // 包含自动实现 get 访问器的引用类型属性。
 }

 public struct Bar { 
      public Foo Foo; // 包含托管类型字段(托管结构)。
}

非托管类型

非托管类型包括枚举、指针和不包含引用类型成员(字段、属性)的结构。

  • 枚举(enum)
  • 指针(pointer)
  • 不含引用类型及托管类型成员(字段、自动实现 get 访问器的属性)的结构(unmanaged structure)

--------------------------------------------参考--------------------------------------------
C# 类型

值类型
枚举(C# 编程指南C# 参考
结构(C# 编程指南C# 参考
数值类型整型浮点型decimal布尔类型

引用类型
类(C# 编程指南C# 参考
接口(C# 编程指南C# 参考
委托(C# 编程指南C# 参考
对象(C# 编程指南C# 参考
字符串(C# 编程指南C# 参考
动态类型(C# 编程指南C# 参考
非托管类型

指针类型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,578评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,969评论 18 399
  • 1. [C#语言基础]请简述拆箱和装箱。 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何...
    胤醚貔貅阅读 10,317评论 1 29
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,452评论 1 10
  • 荒废半载余,手痒难耐,奈何笔墨纸砚去吾渐远,钢笔以代之,乱写一通……
    耕天下阅读 1,514评论 2 1