C# 类型转换全解析

C#中所有的类都继承于OBJECT类

类型转换之间存在隐式和显示就是因为类型所占位数不同

   bool -> System.Boolean (布尔型,其值为 true 或者 false)
  char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)
  byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)
  sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)
  ushort -> System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)
  uint -> System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)
  ulong -> System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)
  short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)
  int -> System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到   2,147,483,647)
  long -> System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)
  float -> System.Single (单精度浮点型,占 4 个字节)
  double -> System.Double (双精度浮点型,占 8 个字节)

当高位数类型转到低位数类型时候

需要使用显示转换,截取相对应位数,如:

int i = 9;

byte[]=System.Conventer.getbyte(i);

低位数类型转换到高位数类型时候可直接转换

byte i = 9;

int k = i;

会自动补足位数;

2.基类和派生类之间的数据类型转换(引用转换)

 例如A类继承与B类

 B b = new A()

 A a=(A)b

 基类上的应用可以直接引用到其派生类中。在OO编程中,派生类的实例实际上就是基类的实例,但加上了一些额外的信息。

 但是若

 B b =new B()

 A  a = (A)B

 就会报错,因为对象不是派生类的实例,而且派生类的引用无法引用基类实例所以错误。(基类引用可以引用派生类实例)

3.装箱和拆箱数据类型转换

 引用和值类型进行装换时候就存在拆箱和装箱过程

 引用类型和值类型的区别

 引用类型放在托管堆中 值类型放在栈中

 当预定义一个值类型时,会在栈中分配相对应的内存空间

 而当声明一个引用类型时候,它只在栈存放一个内存地址指向托管堆中的值

 int i=0;

 string s = i.tostring()

 如上,当值类型转换成引用类型时,在托管堆中临时建一个值为0的箱子,而s指向那个箱子

 int t=(int)s

 如上,当引用类型转换成值类型时,在栈中分配i=0的内存空间,就是拆箱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值