C#参考— —类型

1.通用类型系统概述

通用类型系统定义了如何在运行库中声明、使用和管理类型,同时也是运行库支持跨语言集成的一个重要组成部分。通用类型系统执行以下功能:

  • 建立一个支持跨语言集成、类型安全和高性能代码执行的框架。

  • 提供一个支持完整实现多种编程语言的面向对象的模型。

  • 定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。

通用类型系统支持两种一般类别的类型,每一类都细分成子类别:

  • 值类型
      值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构中。值类型可以使内联的(由运行库         实现)、用户定义的(就是结构体)或枚举的。
  • 引用类型
      引用类型存储对值的内存地址的引用,位于堆上。引用类型可以上自描述类型、指针或接口类型。引用类型的类         型可以由自描述类型的值来确定。自描述类型进一步细分为数值和类类型。类类型是用户定义的类、装箱的值类         型和委托。

作为值类型的变量,每个都有自己的数据副本,因此对一个变量的操作不会影响其他变量。作为引用类型的变量可以引用同一对象;因此对一个变量的操作会影响另一个变量所引用的同一对象。

所有类型都派生自 System.Object 基类型。

类型类别

以下关系图说明了这几种类型是如何相关的。注意,类型的实例可以只是值类型或自描述类型,即使这些类型有子类别也是如此。

                                                    

值和对象

值是数据的二进制表示形式,类型提供了一种解释该数据的方式。值类型直接以类型数据的二进制表示形式存储。引用类型的值是表示该类型的数据的位序列的位置。

每个值都有一个准确的类型,完全定义了值的表示形式和针对值定义的操作。自描述类型的值称为对象。通过检查值,总是可以确定对象的准确类型,但却不能这样处理值类型和指针类型。值可以有多种类型。一种实现某一接口的类型,其值也是该接口类型的值。同样,从某一基本类型派生的类型,其值也是该基本类型的值。

类型和程序集

运行库使用程序集来定位和加载类型。程序集清单包含运行库用来解析在程序集范围内进行的所有类型引用的信息。

运行库中的类型名称有两个逻辑部分:程序集名称和程序集内类型的名称。有着相同名称但位于不同程序集内的类型被定义为两种不同的类型。

程序集在开发人员所看到的名称范围与运行库系统所看到的名称范围之间提供了一致性。开发人员在程序集的上下文中创作类型。开发人员正在构建的程序集内容确立了在运行时的可用名称范围。

类型和命名空间

从运行库的角度看,命名空间只是类型名称的一个集合。特定语言所具有的构造和相应的语法可帮助开发人员构成类型的逻辑组,但运行库在绑定类型时并不使用这些构造。因此,ObjectString 类都是System 命名空间的一部分,但运行库只识别每个类型的完整名称,它们分别为 System.Object 和 System.String。

2.C#类型体系包含下列几种类别

  • 值类型  Value Type
    • 结构  struct
      • 数值类型 (Numeric)
        • 整型(Integer)
          • sbyte
          • byte
          • char
          • short
          • ushort
          • int
          • uint
          • long
          • ulong
        • 浮点型(Float)
          • float
          • double
        • decimal
      • 布尔型 bool
      • 用户定义的结构
    • 枚举 enum
  • 引用类型
    • class
    • interface
    • delegate
             内置引用类型
    • object
    • string
  • 指针类型

3.C#内置类型表(基元类型)

编译器直接支持的数据类型称为基元类型(primitive type)。基元类型和.NET 框架类库FCL存在着直接的映射关系  
      C#类型                           .NET  Framework类型
  • bool                                  System.Boolean                                                                                                       
  • byte                                  System.Byte
  • sbyte                                System.SByte
  • char                                  System.Char
  • decimal                             System.Decimal
  • double                              System.Double
  • float                                  System.Single
  • int                                     System.Int32
  • uint                                   System.UInt32
  • long                                  System.Int64
  • ulong                                System.UInt64
  • object                               System.Object
  • short                                 System.Int16
  • ushort                               System.UInt16
  • string                                System.String

除了 objectstring 外,表中的所有类型均称为简单类型。

C# 类型的关键字及其别名可以互换。例如,可使用下列两种声明中的一种来声明一个整数变量:

  
int x = 123;
System.Int32 x = 123;

若要显示任何 C# 类型的实际类型,请使用系统方法 GetType()。例如,下列语句显示了表示 myVariable 类型的系统别名:

  
Console.WriteLine(myVariable.GetType());

还可使用 typeof 运算符。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值