C#数据类型--值类型和引⽤类型
在C#中,变量分为⼀下⼏种类型
1 值类型
2 引⽤类型
⼀值类型
值类型是从类System.ValueType中派⽣。值类型的变量直接包含数据,每个变量都有⾃⼰的数据副本,因此对⼀个变量执⾏的运算不会影响另⼀个变量(ref和out参数变量除外)。
值类型细分为⼀下类型
1 简单类型
有符号整型:sbyte、short、int、long
⽆符号整型:byte、ushort、uint、ulong
Unicode字符:char
IEEE⼆进制浮点:float、double
⾼精度⼗进制浮点数:decimal
布尔:bool
2 枚举类型:enum
3 结构类型:struct
如需得到⼀个类型或⼀个变量在特定平台上的准确尺⼨,可以使⽤sizeof⽅法,表达式sizeof(type)产⽣以字节为单位存储对象或类型的存储尺⼨。
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
输出结果
Size of int: 4
⼆引⽤类型
引⽤类型的变量存储对数据的引⽤。
多个引⽤类型变量可以引⽤同⼀数据对象。因此,对⼀个变量执⾏运算会影响其它变量。
引⽤类型细分为⼀下类型
1 object类型
object是所有类型的基类。
类型检查在编译时发⽣。
当⼀个值类型转换为对象类型时,则被称为装箱;另⼀⽅⾯,当⼀个对象类型转换为值类型时,则被称为拆箱。
object obj;
obj = 100; // 装箱
int i;
i = (int)obj; // 拆箱
2 dynamic类型
可以存储任何类型的值在dynamic类型变量中。不能直接对其实例化。
类型检查在运⾏时发⽣。
例如:
dynamic d = 100;
3 String类型
string类型是从object类型派⽣的,可以⽤引号或@引号赋值。
string字符串的前⾯加@(“逐字字符串”)将转义字符
例如:
string str = "C:\\Windows";
等价于
string str = @"C:\Windows";
4 ⽤户⾃定义类型
有class、interface、delegate等。
三值类型和引⽤类型的区别
1 值类型在栈中存储数据;引⽤类型在栈中存储数据的地址,数据存储在堆中。
2 赋值时,值类型复制的的是数据;引⽤类型复制的的是数据的地址。
3 值类型不可以为null;引⽤类型可以为null。
例如:
int i = 1;
int i2 = i; // 复制数据
i2 = 2;
writeline输出数值变量Console.WriteLine(i);
Console.WriteLine(i2);
object obj = 10;
object obj2 = obj; // 复制地址
obj2 = 20;
Console.WriteLine(obj);
Console.WriteLine(obj2);
Console.ReadLine();
输出结果:
1
2
20
20
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论