C#类型和变量

类型

  类型定义 C# 中的任何数据的结构和行为。 类型的声明可以包含其成员、基类型、它实现的接口和该类型允许的操作。 变量是用于引用特定类型的实例的标签。

C#中类型可大致分为两种:值类型和引用类型.值类型的变量直接包含它们的数据。 引用类型的变量存储对数据(称为“对象”)的引用。 对于引用类型,两个变量可以引用同一个对象;对一个变量执行的运算可能会影响另一个变量引用的对象。 借助值类型,每个变量都有自己的数据副本;因此,对一个变量执行的运算不会影响另一个变量(refout 参数变量除外)。(注:ref和out后边会讲.)

  C# 的值类型进一步分为:简单类型、枚举类型、结构类型、可以为 null 的值类型和元组值类型。 C# 引用类型又细分为类类型、接口类型、数组类型和委托类型。

以下大纲概述了 C# 的类型系统

  C# 程序使用类型声明创建新类型。 类型声明指定新类型的名称和成员。 用户可定义以下六种 C# 类型:类类型、结构类型、接口类型、枚举类型、委托类型和元组值类型。 还可以声明 record 类型(record structrecord class)。 记录类型具有编译器合成成员。 记录主要用于存储值,关联行为最少。

  • class 类型定义包含数据成员(字段)和函数成员(方法、属性及其他)的数据结构。 类类型支持单一继承和多形性,即派生类可以扩展和专门针对基类的机制。
  • struct 类型定义包含数据成员和函数成员的结构,这一点与类类型相似。 不过,与类不同的是,结构是值类型,通常不需要进行堆分配。 结构类型不支持用户指定的继承,并且所有结构类型均隐式继承自类型 object
  • interface 类型将协定定义为一组已命名的公共成员。 实现 interfaceclassstruct 必须提供接口成员的实现代码。 interface 可以继承自多个基接口,classstruct 可以实现多个接口。
  • delegate 类型表示引用包含特定参数列表和返回类型的方法。 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。 委托类同于函数式语言提供的函数类型。 它们还类似于其他一些语言中存在的“函数指针”概念。 与函数指针不同,委托是面向对象且类型安全的。

classstructinterfacedelegate 类型全部都支持泛型,因此可以使用其他类型对它们进行参数化。

变量

C# 有多种变量,其中包括字段、数组元素、局部变量和参数。 变量表示存储位置。 每个变量都具有一种类型,用于确定可以在变量中存储哪些值,如下文所述。

  • 不可以为 null 的值类型
    • 具有精确类型的值
  • 可以为 null 的值类型
    • null 值或具有精确类型的值
  • object
    • null 引用、对任意引用类型的对象的引用,或对任意值类型的装箱值的引用
  • 类类型
    • null 引用、对类类型实例的引用,或对派生自类类型的类实例的引用
  • 接口类型
    • null 引用、对实现接口类型的类类型实例的引用,或对实现接口类型的值类型的装箱值的引用
  • 数组类型
    • null 引用、对数组类型实例的引用,或对兼容的数组类型实例的引用
  • 委托类型
    • null 引用或对兼容的委托类型实例的引用
  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值