写点什么

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

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

关注

评论

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

区块链赋能文化旅游,推动旅游行业转型升级

13828808769

区块链 #区块链#

重构: 自己挖的坑自己填

夏兮。

Java 重构 测试 单元测试

新版犀牛书该不该入手?

清秋

JavaScript ecmascript ES6 技术书籍 4月日更

人生好走的路那么多,你偏要选这条难走的走

小天同学

自我思考 个人感悟 人生修炼 4月日更

树莓派简介

IT蜗壳-Tango

IT蜗壳教学 4月日更

Redis split-brain 脑裂

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

制作颜色选择器(全)

空城机

JavaScript Vue 大前端 4月日更 颜色选择器

架构实战营 - 模块1 - 作业

Ming

软件架构

云计算防火墙对象(组)的实践

Python研究所

云计算 防火墙 对象组

Java一套拳法刷掉n个遍历树的问题 John 易筋 ARTS 打卡 Week 43

John(易筋)

ARTS活动

Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天

梦想橡皮擦

Python OpenCV 4月日更

智慧公安重点人员管控系统搭建,助推公安智慧化发展

13828808769

区块链+ #区块链#

头条二面:你们公司怎么处理MySQL的 Binlog 日志?

Java架构师迁哥

Kafka又出问题了!

冰河

kafka 消息队列 消息中间件 异步编程

【死磕JVM】给同事讲了一遍GC后,他要去面试,年轻人,就是容易冲动!

牧小农

JVM 垃圾回收 垃圾收集 垃圾回收算法

javascript

wudaxue

JavaScript

重点人员可视化管理平台搭建,公安指挥调度平台

基于角色访问控制RBAC权限模型的动态资源访问权限管理实现

crudapi

spring security 权限 rbac crudapi 角色

Kafka的再平衡机制

五分钟学大数据

kafka 4月日更

不想写代码偷懒之配置化

顿晓

大前端 配置化开发 4月日更

区块链技术推动自然资源领域信息化发展

13828808769

区块链+ #区块链#

大数据计算生态之数据计算(一)

小舰

4月日更

区块链BaaS平台+BI大数据系统

电微13828808271

区块链+

dubbo几个问题整理:优雅停机、线程池配置

程序员架构进阶

dubbo 28天写作 4月日更 优雅停机 线程配置

智慧党建系统搭建,干部管理平台开发

打完新冠疫苗后要注意的两件事

石云升

28天写作 新冠疫苗 4月日更

2021字节大厂面经分享:Java面试高分宝典!GitHub已标星86.7K

比伯

Java 编程 架构 面试 计算机

Linux chmod命令

一个大红包

4月日更

从小白程序员到大厂高级技术专家我看过哪些书籍?

冰河

程序员 程序人生 冰河 推荐书单

区块链BaaS平台,创造不一样的服务

电微13828808271

区块链+

架构训练营模块1作业-江哲

江哲

作业

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