50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

让 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:412356
用户头像

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

关注

评论

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

某充电桩业务服务内存监控和程序行为分析

乘云数字DataBuff

运维 内存监控

《京东金融APP的鸿蒙之旅系列专题》鸿蒙新特性篇:Hello, 仓颉 World

京东科技开发者

用户指南 | 快速迁移 InfluxDB v2 数据至 GreptimeDB

Greptime 格睿科技

数据库 云原生 数据存储 数据迁移

《一文讲透》第4-3期:KWDB 数据库运维 —— 安全与审计(上)

KWDB数据库

时序数据库 数据库运维 审计 数据库安全 多模数据库

华为阅读启动“乘国航 阅世界”国航伴读计划,3重好礼免费领!

最新动态

长上下文语言模型评估体系探析

Baihai IDP

程序员 AI LLMs 长上下文语言模型

如何在敏捷开发中实现更好的需求管理

易成研发中心

需求管理 需求管理工具

和鲸气象联合解决方案闪耀亮相第29届联合国气候变化大会(COP29)

ModelWhale

人工智能 AI R 语言 气候 COP29

HarmonyOS :面向对象式网络请求库,我发布的第一个鸿蒙三方库

李小轰

HarmonyOS NEXT

HarmonyOS :基于 emitter 封装了一个便捷的 EventBus 事件通知

李小轰

HarmonyOS NEXT

探索HarmonyOS:一键掌握Router与NavPathStatck的传参和页面回调技巧

李小轰

HarmonyOS NEXT

华为视频多平台聚合,热门IP《白夜破晓》《珠帘玉幕》任你追

最新动态

和鲸科技创始人&CEO范向伟出席首届工业智算产业发展研讨会,共话 AI 创新与产业化落地

ModelWhale

人工智能 大数据 AI R语言

HarmonyOS UI动态化:探索自定义组件的创建与实时更新技术

李小轰

HarmonyOS NEXT

HarmonyOS :自定义弹窗(CustomDialog)的解耦实践

李小轰

HarmonyOS NEXT

Domino 流计算快速上手 - 2. 聚集

YMatrix 超融合数据库

数据库 数据仓库 流计算 超融合数据库

HarmonyOS :扩展修饰器,实现节流、防抖、权限申请

李小轰

HarmonyOS NEXT

汽车摆臂行业数字化转型方案及MES系统具体功能介绍

万界星空科技

汽车 mes 汽车零部件mes 汽车摆臂行业 汽车摆臂mes

HarmonyOS :自定义组件 @BuilderParam 中 this 作用域填坑小记

李小轰

HarmonyOS NEXT

数智绩效合并报表:全球化合并实现财报精准高效

用友智能财务

科技 财务 企业数智化 财务软件

NocoBase 本周更新汇总:优化 REST API 数据源插件

NocoBase

开源 低代码 插件 无代码 版本更新

强化学习在众包差异化定价中的探索

京东科技开发者

【稳定性】上线三板斧(可灰度、可验证、可回滚)

京东科技开发者

人工智能与人类合作:未来工作模式的新探索

天津汇柏科技有限公司

AI人工智能

商业开源的最佳起步实践 PPT 分享中|QCon・北京站圆满落幕

Greptime 格睿科技

数据库 AI 云原生 活动

HarmonyOS :适配折叠屏展开与收起,实现单屏与双屏UI的无缝切换

李小轰

HarmonyOS NEXT

国内外十大开源快速开发平台推荐

NocoBase

开源 低代码 快速开发 无代码

KWDB v2.1.0 发版说明

KWDB数据库

时序数据库 查询优化 分布式架构 DataX 数据查询

实录速递 | 和鲸ModelWhale助力医学Datathon跨学科协同,共筑数据科学与临床研究标准化新路径

ModelWhale

Python 人工智能 数据库 R语言 临床医学

模拟器快速上手,助力HarmonyOS应用/服务高效开发

白晓明

HarmonyOS 模拟器 HarmonyOS NEXT

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