分为:值类型、引用类型和指针类型
- 值类型可以直接分配一个值,他们从类System.ValueType 中派生的
类型
描述
范围
默认值
bool
布尔值
True 或者False
False
byte
8为无符号整数
0-255
0
char
16位Unicode字符
U+0000 到 U+ffff
"\0"
decimal
128位精确十进制
-7.9*1028到7.9*1028 /100到28
0.0M
double
64位双精度浮点型
(+/-)5.0*10-324 到(+/-)5.0*10-324
0.0D
float
32位单精度浮点型
-3.4*1038到+3.4*1038
0.0F
int
32位有符号整数类型
-2,147,483,648 到 2,147,483,647
0
long
64位有符号整数类型
-9,223,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
unit
32位无符号整数类型
0 到 4,294,967,295
0
ulong
64位有符号整数类型
0 到 18,446,744,073,709,551,615
0
ushort
16位无符号整数类型
0到65535
0
2.引用类型
引用类型不包含储存在变量中的实际数据,但包含对数据的引用
引用类型指向一个内存位置,如果内存位置的数据由一个变量改变,其他变量也会自动改变。
- 引用类型:object、dynamic 和string
- 对象类型object是C#通用类型系统中所有数据类型的终极基类,对象类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。在分配之间需要进行类型转换。
值类型转换为对象类型称之为 装箱
对象类型转换为值类型 成为之 拆箱
- 动态类型:可以储存任何类型的值在动态数据类型中。这些类型检查是否在运行是发生的
语法:dynamic 变量名 = 值;
dynamic aa = 2;
动态类型和对象类型的区别:
动态类型变量的类型检查是运行时发生的
对象类型变量的类型检查是编译时发生的
3.字符串类型:允许给变量分配任何字符串值
字符串类型中 “\\” 表示 “\” 或者使用反转移符号 @“\”
4.指针类型:变量存储另一种类型的内存地址。C#中指针与C或C++中的指针有相同的功能
type* 变量名
例如:int* aa;
- 可空类型:
- int? a; // a可以为int类型和空
- bool? b; // b可以为ture、false、null
- 合并运算符 ??
- double b = a??3; // a不为null返回a,a为null返回b