zoukankan      html  css  js  c++  java
  • C#类型系统 -0006

    CTS (Common Type System)

    .NET类型系统的基石:

    • 类型继承:一个类型可以继承至另一个类型(基类),继承基类的方法、属性和其他成员;.NET内置的数值类型都继承至基类System.Object (C#的关键字:object);这样的统一类型层级结构叫做CTS(common type system)

    • CTS 中的每种类型被定义为值类型或引用类型。使用 struct 关键字定义的类型是值类型;所有内置数值类型都是 structs。使用 class 关键字定义的类型是引用类型。引用类型和值类型遵循不同的编译时规则和运行时行为。

    • CTS中值类型和引用类型的层级结

    值类型

    • 值类型有两类:enum和struct;

    • 值类型派生自System.ValueType,System.ValueType继承自System.Object;

    • 值类型是sealed,即不能被继承;

    • 内置的数值类型都是struct;struct一般用来把一组相关变量聚合到一起;

    public struct Point
    {
        public int x, y;
    
         public Point(int p1, int p2)
        {
            x = p1;
            y = p2;
        }
    }
    

      

    • enum,一般用来定义一组带名字的整数:
    public enum FileMode
    {
        CreateNew = 1,
        Create = 2,
        Open = 3,
        OpenOrCreate = 4,
        Truncate = 5,
        Append = 6,
    }
    
    • 值类型变量的内存一般是分配在栈中;

    引用类型

    • 使用 class, delegate, array或interface定义的都是引用类型;

    • 引用类型变量的内存是在托管堆中(managed heap);

    • 什么引用类型变量后,变量值默认是null,知道使用new创建实例,或者赋值已经用new创建过实例的变量。

  • 相关阅读:
    hdu 1823 Luck and Love 二维线段树
    UVA 12299 RMQ with Shifts 线段树
    HDU 4578 Transformation 线段树
    FZU 2105 Digits Count 线段树
    UVA 1513 Movie collection 树状数组
    UVA 1292 Strategic game 树形DP
    【ACM】hdu_zs2_1003_Problem C_201308031012
    qsort快速排序
    【ACM】nyoj_7_街区最短路径问题_201308051737
    【ACM】nyoj_540_奇怪的排序_201308050951
  • 原文地址:https://www.cnblogs.com/codesee/p/13027418.html
Copyright © 2011-2022 走看看