C#入门(6)隐式转换

前言

隐式转换(Implicit conversion)是一种编程语言的特性,指的是在特定的条件下,编译器自动将一种类型的值转换为另一种类型的值,而无需手动进行显式类型转换。

隐式转换通常用于以下两种情况:

  1. 类型之间的兼容性:当一个表达式需要的是某种类型的值,而实际给定的是另一种类型的值时,编译器会自动进行类型转换,以满足表达式的要求。

  2. 扩展功能:通过定义特定的隐式转换函数,可以使一种类型具备另一种类型的功能,从而扩展了该类型的功能性。

在一些编程语言中,特定的规则和限制被定义用于指定何时和如何进行隐式转换。这些规则通常基于类型的层次结构和类型间的关系,例如继承关系,接口实现等。

需要注意的是,隐式转换虽然方便,但也可能导致一些问题,例如类型不明确、代码可读性差等。因此,在使用隐式转换时,应该谨慎考虑其使用场景和可能导致的潜在问题。

各种类型的范围

在C#中,各种变量类型的存储范围如下:

  1. bool: 1个字节,只能存储true或false的布尔值。

  2. byte: 1个字节,存储无符号的8位整数,取值范围是0~255。

  3. sbyte: 1个字节,存储有符号的8位整数,取值范围是-128~127。

  4. char: 2个字节,存储16位Unicode字符,取值范围是 '\u0000'到'\uffff'。

  5. short: 2个字节,存储有符号的16位整数,取值范围是-32,768~32,767。

  6. ushort: 2个字节,存储无符号的16位整数,取值范围是0~65,535。

  7. int: 4个字节,存储有符号的32位整数,取值范围是-2,147,483,648~2,147,483,647。

  8. uint: 4个字节,存储无符号的32位整数,取值范围是0~4,294,967,295。

  9. long: 8个字节,存储有符号的64位整数,取值范围是-9,223,372,036,854,775,808~9,223,372,036,854,775,807。

  10. ulong: 8个字节,存储无符号的64位整数,取值范围是0~18,446,744,073,709,551,615。

  11. float: 4个字节,存储32位浮点数,取值范围是-3.4028235E+38~3.4028235E+38。

  12. double: 8个字节,存储64位浮点数,取值范围是-1.79769313486232E+308~1.79769313486232E+308。

  13. decimal: 16个字节,存储128位十进制数,取值范围是±1.0 × 10^-28 ~ ±7.9 × 10^28。

  14. string: 多个字符,存储一串字符。

  15. char:单个字符;

这是我们再变量中没有提及的,因为博主觉得在这里写出方便大家阅读和对比,接着我们就要来讲一下隐式替换的基本原则。

1.相同大类型之间的转换

原则:大范围装小范围

例子:

///int 隐式转换成long
long l=1;
int i=1;
l=i;

存储关系示例(箭头指向为可以存储):

整数类型:long->(u)int->(u)short->(u)byte

浮点数:double->float

tips:decimal这个类型不能隐式转换,特殊类型也不存在隐式转换

2.不同大类型之间的转换

原则1:无符号装有符号,有符号不能隐式转换成无符号

原则2:有符号装无符号时,无符号的范围要小于有符号的。

3.浮点数装整数

浮点数可以装载任何类型的整数!

tips:decimal不能隐式存储float和double,但是可以隐式转换存储整型

4.整数不能隐式转换装浮点数

5.特殊和其他类型的隐式转换

bool不能和其他类型相互隐式转换
char没有办法隐式转换存储其他类型,但是可以被其他类型存储,转换为一个asc码
string同bool

总结

隐式转换在实际的开发中用的比较少,但是希望大家也能记住一些,我们学习的更多是计算机对数字处理的一种思想,这种思想其实在大部分后续的知识中都是有体现的。

所有知识不是说不用则不取,我们学习什么东西,都要系统地去了解,这样你的大脑框架才算完整。你对语言的理解才算深入。

下一节我们会讲解显式转换,在实际开发中使用会更多。

最后,希望大家在学习的路上戒躁戒躁,一步一个脚印。

共勉。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值