概述
目录
C#数据类型系统
内置类型
自定义类型
通用类型系统
数据类型:值类型、引用类型、指针类型
1.值类型分为:struct和enum
2.引用类型定义为 class、record、delegate、数组或 interface 的类型。
C#数据类型系统
C# 是一种强类型语言。 每个变量和常量都有一个类型,表达式也是如此, 每个方法声明都为每个输入参数和返回值指定名称、类型和种类(值、引用或输出)。当在程序中声明变量或常量时,必须指定其类型或使用 var关键字让编译器推断类型。
内置类型
C# 提供了一组标准的内置类型。 这些类型表示整数、浮点值、布尔表达式、文本字符、十进制值和其他数据类型。 还有内置的 string
和 object
类型。 这些类型可供在任何 C# 程序中使用。 有关内置类型的完整列表。
自定义类型
可以使用 struct、class、interface、enum 和 record 构造来创建自己的自定义类型。 .NET 类库本身是一组自定义类型,以供你在自己的应用程序中使用。 默认情况下,类库中最常用的类型在任何 C# 程序中均可用。 其他类型只有在显式添加对定义这些类型的程序集的项目引用时才可用。 编译器引用程序集之后,你可以声明在源代码的此程序集中声明的类型的变量(和常量)。 有关详细信息。
通用类型系统
对于 .NET 中的类型系统,请务必了解以下两个基本要点:
它支持继承原则。 类型可以派生自其他类型(称为基类型)。 派生类型继承(有一些限制)基类型的方法、属性和其他成员。 基类型可以继而从某种其他类型派生,在这种情况下,派生类型继承其继承层次结构中的两种基类型的成员。 所有类型(包括 System.Int32 (C# keyword: int
) 等内置数值类型)最终都派生自单个基类型,即 System.Object (C# keyword: object)。 这样的统一类型层次结构称为通用类型系统 (CTS)。 若要详细了解 C# 中的继承,请参阅继承。
CTS 中的每种类型被定义为值类型或引用类型。 这些类型包括 .NET 类库中的所有自定义类型以及你自己的用户定义类型。 使用 struct
关键字定义的类型是值类型;所有内置数值类型都是 structs
。 使用 class
或 record
关键字定义的类型是引用类型。 引用类型和值类型遵循不同的编译时规则和运行时行为。
类和结构是 .NET 通用类型系统的两种基本构造。 C# 9 添加记录,记录是一种类。 每种本质上都是一种数据结构,其中封装了同属一个逻辑单元的一组数据和行为。 数据和行为是类、结构或记录的成员。 这些行为包括方法、属性和事件等。
(1)类是引用类型。 创建类型的对象后,向其分配对象的变量仅保留对相应内存的引用。 将对象引用分配给新变量后,新变量会引用原始对象。 通过一个变量所做的更改将反映在另一个变量中,因为它们引用相同的数据。
(2)结构是值类型。 创建结构时,向其分配结构的变量保留结构的实际数据。 将结构分配给新变量时,会复制结构。 因此,新变量和原始变量包含相同数据的副本(共两个)。 对一个副本所做的更改不会影响另一个副本。
(3)记录类型可以是引用类型 (record class
) 或值类型 (record struct
)。
数据类型:值类型、引用类型、指针类型
1.值类型分为:struct
和enum
内置的数值类型是结构,值类型变量直接包含其值,可以直接分配给一个值,eg. int 、char、float、long等,如下所示
类型 | 描述 | 范围 | 默认值 |
---|---|---|---|
bool | 布尔值 | True 或 False | False |
byte | 8 位无符号整数 | 0 到 255 | 0 |
char | 16 位 Unicode 字符 | U +0000 到 U +ffff | ' |