写点什么

让 C#中的 0 等于 0

  • 2009-06-01
  • 本文字数:484 字

    阅读完需:约 2 分钟

C#对装箱后的值类型支持的并不好。与 VB 不同,== 这样的基本算术比较符无法在装箱后的类型上得到正确的结果,即使所比较的值属于同一类型。

变量 类型 值 a int 0 b decimal 0.0 c decimal 0.0 boxA boxed int 0 boxB boxed decimal 0.0 boxC boxed decimal 0.0 dynA dynamic holding an int 0 dynB dynamic holding a decimal 0.0 dynC dynamic holding a decimal 0.0 比较 C# VB a==b true true b==a true true b==c true true a.Equals(b) false <-- b.Equals© true <-- boxA == boxB false true boxB == boxA false true boxB == boxC false true boxA.Equals(boxB) false <-- boxB.Equals(boxC) true <-- dynA == dynB true n/a dynB == dynA true n/a dynB == dynC true n/a 从上表可以看出,在 C#3 与之前的版本中,即使两个装箱的值都是 decimal 类型的,得到的也是不相等的结果,但是 Decimal 类的 Equals 方法返回的却是 true。

幸好在 C#4 中可以避免这样的问题。你需要将装箱的值都转换为 dynamic 类型然后再比较,这样即使两个值本来的类型不相同,也可以得到正确的结果。

复制代码
Console.WriteLine((dynamic)boxA == (dynamic)boxB);
2009-06-01 21:412344
用户头像

发布了 63 篇内容, 共 27.5 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

MT7915 and QCA9880: the duo in wireless connectivity

wallysSK

投放户外LED广告屏有什么好处?

Dylan

媒体 广告 网络 消费

大模型训练在人脸表情识别中的应用

百度开发者中心

深度学习 大模型 LLM

大模型训练显存优化策略

百度开发者中心

深度学习 大模型 LLM

Adobe Camera Raw(PS插件增强工具) Mac/win

Rose

企业如何通过SD-WAN实现异地组网互联?

Geek一起出海

ClkLog埋点系统客户案例-互联网运营经理谈埋点分析系统

ClkLog

MES系统中的电子看板:真正实现数字化车间可视化

万界星空科技

MES系统 mes 数据大屏 万界星空科技mes 电子看板

小企业是否应该采用SD-WAN组网?

Ogcloud

网络 SD-WAN 组网 组网网络

水杉3D建模:Metasequoia 4 Mac激活版 附永久注册码 支持intel/M1/M2

南屿

前端开发Vue3的逻辑复用

伤感汤姆布利柏

开源 Vue 前端 低代码

如何使用Redisson实现分布式锁?

王磊

Java 面试题

PS人像磨皮美容插件Delicious Retouch Panel (DR5)高级版(Win/Mac)

Rose

大模型训练中的断点继续训练问题

百度开发者中心

深度学习 大模型

MySQL常用图形管理工具

小魏写代码

vivo 数据库备份恢复系统演化

vivo互联网技术

数据库备份和恢复

“专业敏捷教练课程” 2024年3月2-3日 · CSP-SM认证周末班【新年特惠】

ShineScrum

敏捷教练 CSP-SM Profession

U盘病毒查杀工具:USBclean for Mac v3.8激活版

胖墩儿不胖y

Mac软件 清洁工具 USB清洁软件

SD-WAN:推动企业上云的全新路径

Ogcloud

网络 SD-WAN 组网

提升软件质量的利器:Mock 测试教程

Apifox

前端 前端开发 Mock Mock 服务 Mock.js

HTTPS可能遇到的安全问题

德迅云安全杨德俊

安全 网站 中间人攻击 HTTPS协议

喜讯!九章云极DataCanvas公司顺利通过ITSS运维二级认证

九章云极DataCanvas

九章云极DataCanvas公司两大标杆案例入选《2023大模型落地应用案例集》

九章云极DataCanvas

GLM助力通用预训练

百度开发者中心

人工智能 LLM

Sensei for Mac专业的硬盘清理优化工具

南屿

【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队

京东科技开发者

TinyEngine 服务端正式开源啦!!!

OpenTiny社区

开源 前端 低代码

Enfocus PitStop Pro 2022 for Mac(pdf增强插件) v22.0.1378944中文

南屿

让C#中的0等于0_.NET_Jonathan Allen_InfoQ精选文章