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 实现的是同一性; 而非相等性;

转载于:https://www.cnblogs.com/generalLi/p/6287567.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值