多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 值类型(C# 参考) 值类型主要由两类组成: * [结构](https://msdn.microsoft.com/zh-CN/library/ah19swz4.aspx) * [枚举](https://msdn.microsoft.com/zh-CN/library/sbbt4032.aspx) 结构分为以下几类: * Numeric(数值)类型 * [整型](https://msdn.microsoft.com/zh-CN/library/exx3b86w.aspx) * [浮点型](https://msdn.microsoft.com/zh-CN/library/9ahet949.aspx) * [decimal](https://msdn.microsoft.com/zh-CN/library/364x0z75.aspx) * [bool](https://msdn.microsoft.com/zh-CN/library/c8f5xwh7.aspx) * 用户定义的结构。 ## 值类型的主要功能 基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。 所有的值类型均隐式派生自 [System.ValueType](https://msdn.microsoft.com/zh-CN/library/system.valuetype.aspx)。 与引用类型不同,不能从值类型派生出新的类型。但与引用类型相同的是,结构也可以实现接口。 与引用类型不同,值类型无法包含 **null** 值。但是,[可以为 null 的类型](https://msdn.microsoft.com/zh-CN/library/1t3y8s4s.aspx) 功能允许值类型分配给 **null**。 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。有关值类型的默认值的信息,请参见[默认值表](https://msdn.microsoft.com/zh-CN/library/83fhsxwc.aspx)。 ## 简单类型的主要功能 所有的简单类型(C# 语言的组成部分)均为 .NET Framework 系统类型的别名。例如,[int](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx) 是 [System.Int32](https://msdn.microsoft.com/zh-CN/library/system.int32.aspx) 的别名。有关完整的别名列表,请参见 [内置类型表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/ya5y69ds.aspx)。 编译时计算操作数均为简单类型常数的常数表达式。 可使用文字初始化简单类型。例如,“A”是 **char** 类型的文字,而 2001 是 **int** 类型的文字。 ## 初始化值类型 在使用 C# 中的局部变量之前,必须对其进行初始化。例如,可能声明未进行初始化的局部变量,如以下示例所示: ``` int myInt; ``` 那么在将其初始化之前,无法使用此变量。可使用下列语句将其初始化: ``` myInt = new int(); // Invoke default constructor for int type. ``` 此语句是下列语句的等效语句: ``` myInt = 0; // Assign an initial value, 0 in this example. ``` 当然,可以用同一个语句进行声明和初始化,如下面示例所示: ``` int myInt = new int(); ``` - 或 - ``` int myInt = 0; ``` 使用 [new](https://msdn.microsoft.com/zh-CN/library/51y09td4.aspx) 运算符时,将调用特定类型的默认构造函数并对变量赋以默认值。在上例中,默认构造函数将值 0 赋给了 myInt。有关通过调用默认构造函数所赋的值的更多信息,请参见[默认值表](https://msdn.microsoft.com/zh-CN/library/83fhsxwc.aspx)。 对于用户定义的类型,使用 [new](https://msdn.microsoft.com/zh-CN/library/51y09td4.aspx) 来调用默认构造函数。例如,下列语句调用了 Point 结构的默认构造函数: ``` Point p = new Point(); // Invoke default constructor for the struct. ``` 此调用后,该结构被认为已被明确赋值;也就是说该结构的所有成员均已初始化为各自的默认值。 有关 new 运算符的更多信息,请参见 [new](https://msdn.microsoft.com/zh-CN/library/51y09td4.aspx)。 有关格式化数字类型输出的信息,请参见[格式化数值结果表](https://msdn.microsoft.com/zh-CN/library/s8s7t687.aspx)。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [C# 关键字](https://msdn.microsoft.com/zh-CN/library/x53a06bb.aspx) [类型(C# 参考)](https://msdn.microsoft.com/zh-CN/library/3ewxz6et.aspx) [类型参考表(C# 参考)](https://msdn.microsoft.com/zh-CN/library/1dhd7f2x.aspx) [引用类型(C# 参考)](https://msdn.microsoft.com/zh-CN/library/490f96s2.aspx)