C#中的自动类型转换和强制类型转换
- 作者: 用户35175328
- 来源: 51数据库
- 2021-08-06
前面已经认识了不同的数据类型,你们有没有尝试过让不同的数据类型进行运算呢?
int a = 1; double b = a; console.writeline(b);
运行结果是:1
我们把一个整型的变量赋值给了一个浮点型的变量,可以正常的输出,如果我们把一个浮点型的变量赋值给一个整型的变量呢?
double a = 1; int b = a; console.writeline(b);
这样就会报错。
为什么呢?因为我们之前说过,变量就像一个容器,里面存放着变量的值。而数据类型就相当于容器的类型,决定了容器能够存放什么样的值。
试想,生活中我们把小盒子里的东西放进大盒子里,是没有问题的。数据类型也是这样。我们把整型的数据赋值给浮点型是可以放进去的,放进去之后里面的值1其实也就变成了浮点型,即1.0,不过c#输出的时候,很聪明的把后面的.0去掉了。
结论:占字节小的可以向占字节大的自动转换,但占字节大的不能向占字节小的自动转换。
这种数据类型的转换是自动完成的,所以叫做自动类型转换。
如果我偏要把字节大的赋值给字节小的怎么办呢?试想,生活中我们把大盒子中的东西装进小盒子,东西少还好,东西多了就只能装进去一部分了。现在我说,我不听我不听,我就是要把大盒子的东西装进小盒子。哭唧唧……
没办法,我们只能使用强制类型转换,即把占字节大的数据类型强制转换为占字节小的数据类型。
double a = 1.2; int b = (int)a; console.writeline(b);
我们在引用变量a给b赋值时,在a前面加了个括号,就是把数据类型强制转换为括号里的数据类型。我们运行一下,结果是:1
a的值是1.2,强制类型转换赋值给了b之后就只剩1了,因为整型的没有小数部分,所以装不下了啊。
总结
以上所述是小编给大家介绍的c#中的自动类型转换和强制类型转换 ,希望对大家有所帮助
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
