在C#中,变量分为以下几种类型
- 值类型(Value types)
- 引用类型(Reference types)
- 指针类型(Pointer types)
1.值类型
直接分配给值类型变量一个值,值类型变量直接包含数据,声明一个值类型的变量时,系统分配内存来存储值。获得值类型的长度,使用方法sizeof(type)。
类型 | 描述 | 范围 | 默认值 |
---|---|---|---|
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 |
2.引用类型
引用类型变量指向的是一个内存位置,内置的的引用类型有:object、dynamic、string;用户自定义的引用类型有:class、interface、delegate等。
当一个值类型被转换为对象类型即是装箱,当对象类型被转换为值类型时即为拆箱。
1. Object类型
Object是System.Object类的别名,是所有类型的父类,可以被分配任何类型,分配之前先进行类型转换即可。
2. Dynamic(动态)类型
可以存储任何类型的值。eg: dynamic d =10;
3. String类型
String类型是System.String类的别名,它是从Object类型派生来的,字符串类型的值通过两种形式进行分配:引号和@引号。
eg: String str = “hello”;
String s = @”hello”;(@称作逐字字符串,将转义字符\当作普通字符对待。
String s = @”C:\windows”;
等价于
String s= “C:\windows”;
@字符串可以任意换行,换行符和缩进空格都计算在字符串长度之内。
3.指针类型
指针类型变量存储另一种类型的内存地址,与C和C++中的指针类型具有相同功能。
声明:type* identifier;
eg: char* cptr;
int* iptr;