美文网首页
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# 基础——托管类型和非托管类型

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