美文网首页
C# 基础——托管类型和非托管类型

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

作者: Stronger2015 | 来源:发表于2016-05-08 09:26 被阅读1581次

在介绍 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# 参考
非托管类型

指针类型

相关文章

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

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

  • C# 托管内存与非托管内存之间的转换(结合Unity3d的实际开

    C# 托管内存与非托管内存之间的转换(结合Unity3d的实际开发) 1.c#的托管代码和非托管代码 c#有自己的...

  • C++\CLI中的Blittable类型

    当你调用非托管程序集中的代码(C/C++)时,才会用到(比如调用Win32 API, COM) 当托管类型和非托管...

  • 托管钱包与非托管钱包的区别

    1:什么是托管类型钱包? 托管类型钱包不提供用户私钥或者会把私钥存储在自己的服务器中。 托管类型钱包的主要优点是:...

  • C# 调用非托管DLL

    C#高用非托管代码4种方法: 1,通过平台调用(Platform Invoke, P/Invoke)来调用非托管D...

  • 第一部分:C#语言基础

    第1章 C#类型基础 C#中的两种类型:值类型和引用类型 1.1 值类型和引用类型 值类型包括了结构和枚举,引用类...

  • Blittable 类型

    Blittable 类型 Blittable 类型是托管代码和本机代码中具有相同位级别表示形式的类型。因此,无需将...

  • C#中关于非托管资源的释放

    托管资源与非托管资源的区别 资源分为托管资源和非托管资源。 托管资源是指由CLR管理分配和释放的资源,也就是我们直...

  • sequelize-typescript 事务

    0. 托管于非托管事务区别 托管(自动t.commit() 和 t.rollback()) 非托管(手动t.com...

  • C#之托管与非托管资源

    C#中的数据类型 C#中的所有类型都是(直接或间接)从System.Object类型派生的。C#的类型被分成两大类...

网友评论

      本文标题:C# 基础——托管类型和非托管类型

      本文链接:https://www.haomeiwen.com/subject/khssrttx.html