C#语言 -- 类型转换

C#语言主要有两种类型:

  • 值类型:直接存储在内存的栈上面;int, bool, struct, enum,
  • 引用类型:在栈上只存储一个引用,堆上面才会存储具体的值;内建引用:object, string,dynamic; class

C#类型转换

C#是一种强类型的编程语言,即在编译的时候进行类型的检查。

类型转换的形式:

1. 隐式转换:

	//1. 隐式转换;用于小的类型向大的类型转换;子类向基类转换;
            int i = 10;
            long l = i;

2. 显式转换:有数据丢失可能无法强制转换,要使用异常机制

            //2. 显式转换:有大的范围向小的范围转换; 基类向子类转换:
            double d = 10.05;
            int iFromD = (int)d;

使用as: as只能用于引用类型和非空类型

C1 c1 = new C1();

C2 c2 = c1 as C2;  //不会报错,如果转换失败,则c2=null;


3. 通过Method进行转换:

 int iFroms = Convert.ToInt32("100");

或者:int iFroms =Int32.Parse("100");

或者:int iFroms2;
            bool iFroms = Int32.TryParse("100", out iFroms2); //尝试去转换


C#的装箱和拆箱和Nullable类型

1. 装箱: 将一个值类型转换成引用类型 :将栈中的值类型打包放入堆中

//装箱:是一个隐式转换,不需要特别的语法
            int iToBoxing = 100;
            object iBoxed = iToBoxing;

2. 拆箱: 将一个引用类型转变成值类型

            //拆箱: 通过显式转换实现,可能有数据丢失或出错
            int iUnBoxing = (int)iBoxed;


由于装箱和拆箱比较消耗资源,因此应当尽量避免使用


3. 另值类型可为空:

int? iNullable = 100;

相当于:System.Nullable<int> iNullable = 100;

访问时用: iNullable.hasValue; 判断是否有值,如果有,则可以用iNullable.Value; 访问;

或者:iNullable.GetValueOrDefault(); 如果为空,返回0, 不为空,返回该值

另外: int ii = iNullable ?? 500; // 如果iNullable为空,则赋值为500,不为空,则保持原值







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值