C# 是一种强类型语言。每个变量、常量及求值得表达式都有一个类型。方法签名指定方法参数的类型和返回值。
类型中可存储以下信息:
-
类型变量所需的存储空间。
-
可以表示的最大值和最小值。
-
包含的成员(方法、字段、事件等)。
-
继承自的基类型。
-
在运行时分配变量内存的位置。
-
允许执行的运算种类。
编译器使用类型信息来确保在代码中执行的所有操作都是类型安全。声明变量或常量时,必须指定其类型,或使用var关键字。声明变量后,不能使用新类型重新声明该变量,并且不能为其分配与其声明的类型不兼容的值。
编译器将类型信息作为元数据嵌入可执行文件中。公共语言运行时 (CLR) 在运行时使用相应的元数据,从而在分配和回收内存时进一步保证类型安全性。
编译器会自动执行不会导致数据丢失的类型转换。如果类型转换可能会导致数据丢失,必须在源代码中进行显式转换。
通用类型系统
- 支持继承原则。所有类型最终都派生自单个基类型,即System.Object。
- CTS 中的每种类型被定义为值类型或引用类型。使用struct关键字定义的类型是值类型, 使用class关键字定义的类型是引用类型。

值类型:派生自System.ValueType。值类型变量直接包含值。内存在声明变量的任何上下文中进行内联分配,没有单独的堆分配或垃圾回收开销。值类型分为两类:结构和枚举。
- 结构:内置数值类型是结构。值类型为“密封”,不能从System.Int32派生类型,并且不能将结构定义为从任何用户定义的类或结构继承,因为结构只能从System.ValueType继承。 但是,一个结构可以实现一个或多个接口。可以将结构类型显式转换成接口类型,即装箱操作,将结构包装在托管堆上的引用类型对象内。使用struct关键字可以创建你自己的自定义值类型。
内容来源于microsoft官方文档。https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/types/
浙公网安备 33010602011771号