值类型无法包含 null 值

时间:2022-04-19 07:28:01

存储在栈里 

基于值类型的变量直接包罗值(值类型存储实际值)。 将一个值类型变量赋给另一个值类型变量时,将复制包罗的值。 这与引用类型变量的赋值差别,引用类型变量的赋值只复制对东西的引用,而不复制东西自己。

所有的值类型均隐式派生自 System.ValueType。

与引用类型差别,不能从值类型派生出新的类型。 但与引用类型不异的是,布局也可以实现接口。

与引用类型差别,值类型无法包罗 null 值。 但是,可以为 null 的类型 成果允许值类型分配给 null。

每种值类型均有一个隐式的默认结构函数来初始化该类型的默认值。

值类型分为两类: struct( 布局 )、 enum(枚举

struct( 布局 )分为以下几类:

Numeric(数值)类型

整型

浮点型

decimal

bool

用户界说的布局。

下表列出了 C# 中内置类型中可用的值类型:

类型描述范畴默认值
bool   布尔值   True 或 False   False  
byte   8 位无标记整数   0 到 255   0  
char   16 位 Unicode 字符   U +0000 到 U +ffff   ‘\0‘  
decimal   128 位精确的十进制值,28-29 有效位数   (-7.9 x 1028 到 7.9 x 1028) / 100 到 28   0.0M  
double   64 位双精度浮点型   (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308   0.0D  
float   32 位单精度浮点型   -3.4 x 1038 到 + 3.4 x 1038   0.0F  
int   32 位有标记整数类型   -2,147,483,648 到 2,147,483,647   0  
long   64 位有标记整数类型   -923,372,036,854,775,808 到 9,223,372,036,854,775,807   0L  
sbyte   8 位有标记整数类型   -128 到 127   0  
short   16 位有标记整数类型   -32,768 到 32,767   0  
uint   32 位无标记整数类型   0 到 4,294,967,295   0  
ulong   64 位无标记整数类型   0 到 18,446,744,073,709,551,615   0  
ushort   16 位无标记整数类型   0 到 65,535   0  

实际上是简单类型,所有的简单类型(C# 语言的构成部分)均为 .NET Framework 系统类型的别号。 例如,int 是 System.Int32 的别号。可使用文字初始化简单类型。 例如,“A”是 char 类型的文字,而 2001 是 int 类型的文字。如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 要领。表达式 sizeof(type) 孕育产生以字节为单位存储东西或类型的存储尺寸。下面举例获取任何机器上 int 类型的存储尺寸: