zoukankan      html  css  js  c++  java
  • 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 实现的是同一性; 而非相等性;

  • 相关阅读:
    JavaWeb--HttpSession案例
    codeforces B. Balls Game 解题报告
    hdu 1711 Number Sequence 解题报告
    codeforces B. Online Meeting 解题报告
    ZOJ 3706 Break Standard Weight 解题报告
    codeforces C. Magic Formulas 解题报告
    codeforces B. Sereja and Mirroring 解题报告
    zoj 1109 Language of FatMouse 解题报告
    hdu 1361.Parencodings 解题报告
    hdu 1004 Let the Balloon Rise 解题报告
  • 原文地址:https://www.cnblogs.com/generalLi/p/6287567.html
Copyright © 2011-2022 走看看