zoukankan      html  css  js  c++  java
  • .NET之美 第一部分C#语言基础

    第一章 类型基础

    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

  • 相关阅读:
    资产采集:
    思想:
    Redis 以及 Python操作Redis
    Django在使用Mysql迁移数据库时,会报的错
    HTML
    数据库操作(四)
    数据库操作(二)
    数据库操作(三)
    数据库操作(一)
    MySQL的sql_mode模式说明及设置
  • 原文地址:https://www.cnblogs.com/xcsn/p/7507976.html
Copyright © 2011-2022 走看看