AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

开源一夏 | Docker Compose从入门到实践

微枫Micromaple

开源 容器 云原生 8月月更

前端程序员在培训学习中需要学习什么?

小谷哥

“软件定义汽车”时代,车载生态安全运转需小程序化技术

Speedoooo

小程序 车联网 小程序容器 车载安全

科创人·望繁信创始人索强:中国版流程挖掘注定有完全不同的活法

科创人

字节跳动基于ClickHouse优化实践之“多表关联查询”

字节跳动数据平台

数据库 数据分析 OLAP Clickhouse 数据查询

如何在OpenHarmony上使用SeetaFace2人脸识别库?

OpenHarmony开发者

OpenHarmony

干货 | 工单系统与 ITSM 软件的区别是什么?

嘉为蓝鲸

运维 AIOPS 流程 ITSM 工单

java编程技术学习好还是自学好

小谷哥

开源小白到核心开发——我与 sealer 的成长故事

阿里巴巴中间件

Docker 阿里云 容器 云原生 sealer

Ding!您有一份ChunJun实用指南,请查收

袋鼠云数栈

IntelliJ IDEA 设置 IBM Semeru JDK

HoneyMoose

内网场景 Dubbo 微服务接入观测云

观测云

开源公开课丨大数据调度系统Taier任务调度介绍

袋鼠云数栈

学好前端开发技术的培训机构推荐

小谷哥

EMQ携“云边一体化”IoT解决方案亮相第十届中国电子信息博览会

EMQ映云科技

物联网 IoT 云边一体 emq 8月月更

笔记 | 关于SRE在金融行业落地的探讨

嘉为蓝鲸

运维 金融 SRE

IBM Semeru Windows 下的安装

HoneyMoose

Node js 开发入门 —UDP 编程,小白也能轻松学会

CRMEB

NFTScan 与 Bulletime 在 NFT 底层数据方面达成战略合作

NFT Research

区块链 NFT 合作伙伴

IPQ4019 IPQ4029 ,wallys ,802.11ac Outdoor Metal Waterproof Enclosure Metal Outdoor

wallys-wifi6

如何选择适合自己的前端培训机构

小谷哥

SpringBoot 整合 MyBatis

mybatis springboot 8月月更

Nginx + keepalived 实现高可用

C++后台开发

nginx 高可用 中间件 后端开发 C++开发

ElasticSearch 集群备份与恢复实践

移动云大数据

elasticsearch

RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

矜辰所致

RT-Thread 8月月更 IO设备模型

中小微企业如何快速开发信息化系统

力软低代码开发平台

“似水无形” - 小程序化

FN0

小程序 容器化 轻应用

Spark Driver CPU 占用异常问题排查

观远数据

spark bug修复 #开源 8月月更

Apache Pulsar Tenant 和 Namespace 级别限速使用与实现

移动云大数据

pulsar

零基础学习java有必要参加吗?

小谷哥

iofod - 借助低代码快速构建WeUI表单

独来独往

前端 低代码 表单 weui

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