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创建过实例的变量。

  • 相关阅读:
    Exception: Failed to execute 'setItem' on 'Storage'
    element ui中动态添加的表单进行验证
    10. 自定义assertThat中的Matcher函数lt、gt
    8. anyInt()、anyString()、eq()、anyCollection()、verify验证void方法
    7. 参数匹配:eq、isA、any
    6. spy
    4-5. when-thenXX、doXX-when、Answer、thenCallRealMethod
    2. 开启Mock的三种方式、深度Mook
    1. quickstart
    Sentinel
  • 原文地址:https://www.cnblogs.com/codesee/p/13027418.html
Copyright © 2011-2022 走看看