• CLR VIA C#: 基元类型、 引用类型 和 值类型


    一、基元类型 、 引用类型 和 值类型的区别;

      1、基元类型(primitive type):编译器直接支持的数据类型; 基元类型 直接映射到 FCL 中存在的类型。

        C# 小写是基元类型,例如:string ,  大写是FCL类型,例如String,  基元类型直接映射到FCL类型,所以这两者之间没有区别,一模一样,不用纠结使用哪种方式了。

         支持 直接使用FCL类型, 不使用基元类型, Float 对应 Single FCL类型; dynamic 对应  System.Object FCL类型;

      2、C# 默认是 溢出检查关闭; 操作符 checked() 和 unchecked() 可以在特定区域控制溢出检查;

     3、引用类型 : 任何类 都是引用类型, 引用类型总是从托管堆上分配, c#的new操作符返回对象内存地址; 引用类型 在托管堆中分配 内存, 返回内存地址

         比如: ClassA a = new ClassA();  a 是 内存地址,指向托管堆中的数据;

          值类型: 结构(struct) 或 枚举(enum)类型,  值类型的实例 一般在线程栈上分配;

       两者的一个重点区别: 将值类型变量赋给另一个值类型变量,会执行逐字段的复制。 将引用类型的变量 赋给 另一个引用类型的变量只复制内存地址。 所以多个引用类型变量 可以引用堆中同一对象, 值类型变量则自成一体。

    二、 对象相等性 和 同一性

     1、同一性:   使用(引用) 是通过一个对象, (同一个对象,值完全相同)

    2、相等性 : 值完全相同, (1、同一个对象,值相同 2、不同对象【相同类型的】,值相同)

    Object 的 Equals 实现的是同一性; 而非相等性;

  • 相关阅读:
    Android学习笔记安卓基础知识
    V8编程1
    dfdf
    NodeJS沙箱
    CGI编程cgihtml库简析
    dsfdsf
    Android学习笔记获取屏幕大小
    Android学习笔记AndroidManifest.xml配置文件详解
    HTTP状态码解析
    简易c++版本日志库
  • 原文地址:https://www.cnblogs.com/generalLi/p/6287567.html
Copyright © 2020-2023  润新知