第一章 类型基础

1 值类型与引用类型

  CLR 支持两种类型:值类型引用类型,

  C#的所有值类型均隐式派生自System.ValueType:

  • 结构体:struct(直接派生于System.ValueType);

    • 数值类型:

      • 整 型:sbyte(System.SByte的别名),short(System.Int16),int(System.Int32),long (System.Int64),byte(System.Byte),ushort(System.UInt16),uint (System.UInt32),ulong(System.UInt64),char(System.Char);
      • 浮点型:float(System.Single),double(System.Double);
      • 用于财务计算的高精度decimal型:decimal(System.Decimal)。
    • bool型:bool(System.Boolean的别名);
    • 用户定义的结构体(派生于System.ValueType)。
  • 枚举:enum(派生于System.Enum);
  • 可空类型(派生于System.Nullable<T>泛型结构体,T?实际上是System.Nullable<T>的别名)。

  值类型(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据

  C#有以下一些引用类型:

  • 数组(派生于System.Array)
  • 用户用定义的以下类型:
    • 类:class(派生于System.Object);
    • 接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。Anders在《C# Programming Language》中说,接口只是表示一种约定[contract]);
    • 委托:delegate(派生于System.Delegate)。
  • object(System.Object的别名);
  • 字符串:string(System.String的别名)。

  可以看出:

  • 引用类型与值类型相同的是,结构体也可以实现接口;
  • 引用类型可以派生出新的类型,而值类型不能;
  • 引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型);
  • 引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值

  简单说明:在内存中,变量会被分配在栈上来进行操作。值类型存储在栈上,而引用类型存储在堆上,栈上的变量记录该对象的地址

装箱和拆箱

  装箱:将一个值类型转换成等价的引用类型。

  拆箱:将一个已经装箱的引用类型转为值类型。

2 对象判等

  

未完待续...

参考:

http://www.cnblogs.com/siqing99/archive/2012/04/03/2430918.html

最新文章

  1. 【腾讯Bugly干货分享】移动App入侵与逆向破解技术-iOS篇
  2. Android(Linux)控制GPIO的方法及实时性分析
  3. Collection接口
  4. Android中自定义checkbox样式
  5. 我的ORM之示例项目
  6. MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结
  7. App Store--心酸的上线路,说说那些不可思议的被拒理由
  8. Codeforces446C DZY Loves Fibonacci Numbers(线段树 or 分块?)
  9. 信号处理程序(signal handler)会被重置的信号
  10. 解析Android开发优化之:从代码角度进行优化的技巧
  11. ASP.NET WebApi 增删改查
  12. tomcat源码分析(二)启动过程
  13. Java公开课-01.类和对象
  14. mysql 安装配置
  15. #宽带选择# V2EX讨论
  16. 【shiro】(4)---Shiro认证、授权案例讲解
  17. python基础之Day6
  18. es某个分片受损或卡在INITIALIZING状态时解决办法
  19. [QT]QStackedWidget学习使用 可用于多界面
  20. 将Windows上的Oracle迁移至Linux

热门文章

  1. Java NIO系列教程(七) selector原理 Epoll版的Selector
  2. linux部署Web项目总结
  3. ACM-ICPC 2018 焦作赛区网络预赛 A Magic Mirror(签到)
  4. AJAX工作原理与缺点
  5. 细说shiro之四:在web应用中使用shiro
  6. Unable to find CMake in android studio
  7. windows生成dump文件
  8. flex布局下overflow失效问题
  9. redis集群学习
  10. LOJ #2587「APIO2018」铁人两项