报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

关注

评论

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

Spark知识点简单总结

五分钟学大数据

大数据 spark 5月日更

飞猪基于 Serverless 的云+端实践与思考

阿里巴巴云原生

Serverless 容器 运维 云原生 监控

百度 Serverless 架构揭秘与应用实践

百度开发者中心

百度 开源 Serverless 云原生

部署混合云环境的5大挑战

云计算

超级详细!全网独家首发的SpringCloud Alibaba 到底有多强?

Java 程序员 架构 面试

双非渣硕也能上岸?痛述阿里Java岗7轮技术面经历,险幸上岸

Java 程序员 架构 面试

论:在996的天下,Java程序员该如何高效学习

Java架构师迁哥

iOS面试--拼多多最新iOS开发面试题

一意孤行的程序员

ios swift 面试 ios开发 知识分享

Hive窗口函数与分析函数

大数据技术指南

hive 5月日更

ETL-KETTLE工具使用

this

Java 数据 数据同步 ETL

程序员写好技术文章的几点小技巧

阿里巴巴云原生

程序员 云原生 写作 写作技巧

☕【JVM 技术之旅】让你完全攻克内存溢出(OOM)这一难题(上)

码界西柚

JVM OOM 异常 Exception 5月日更

存储技术入门,这些硬件应该首先有所了解

SunnyZhang的IT世界

服务器 存储 交换机 san

为什么5、6月会空缺出大量技术岗?跳槽注意事项+面试官关心什么

Java架构师迁哥

首届HarmonyOS开发者创新大赛颁奖典礼于深圳召开

科技汇

Kubernetes 普及系列:容器基础入门

CODING DevOps

Kubernetes

仰望天空,脚踏实地 —— CODING OKR 全新上线

CODING DevOps

团队管理 OKR

阿里云原生开源大家族加入中科院软件所开源软件供应链点亮计 - 暑期 2021

阿里巴巴云原生

开源 容器 微服务 开发者 云原生

每个开发人员都应该知道的 10 个 GitHub 仓库

LeanCloud

GitHub web开发

简单了解 MySQL 中相关的锁

leonsh

MySQL 后端

5分钟速读之Rust权威指南(八)

wzx

rust

IO

ltc

IO流

面向WEB开发人员的Docker(五):部署开发WordPress

devpoint

Docker Wordpress 部署 Docker-compose

我粉了!阿里大牛从内部带出来的百亿级高并发系统,从基础到实战、面面俱到

Java 程序员 架构 面试

推荐计划 | 推荐好友用 CODING,获高额返现奖励

CODING DevOps

团队管理 敏捷开发 研发工具 开发团队

高级软件工程师必备的五大技能

架构精进之路

5月日更

字节跳动Java岗一二三面全经过分享

北游学Java

Java 字节跳动 面试

参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!

阿里巴巴云原生

开源 开发者 云原生 dubbo 中间件

华为HMS生态和1+8+N的交叉点,点透棋局的华为帐号

脑极体

做一次黑客,入侵一次服务器

叫我阿柒啊

Docker 入侵 docker远程 redis注入

玩转直播系列之消息模块演进(3)

vivo互联网技术

Java 服务器 消息系统 直播技术

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