写点什么

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

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

关注

评论

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

openEuler社区开源项目:CPDS(容器故障检测系统)介绍

openEuler

开源 容器 云原生 操作系统 openEuler

全球银行最大分布式核心系统全面上线,邮储银行做到了!

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

常考vue面试题(附答案)

bb_xiaxia1998

Vue

高级前端常见手写面试题指南

helloworld1024fd

JavaScript

秒云荣获2022爱分析·中国运维最佳实践案例大奖

MIAOYUN

运维 解决方案 容器云平台 云原生容器 IT解决方案

前端一面高频面试题(附答案)

loveX001

JavaScript

react的jsx和React.createElement是什么关系?面试常问

beifeng1996

React

React面试:谈谈虚拟DOM,Diff算法与Key机制

beifeng1996

React

【深入浅出Dubbo3原理及实战】「SpringCloud-Alibaba系列」基于Nacos作为注册中心进行发布SpringCloud-alibaba生态的RPC接口实战

洛神灬殇

nacos SpringCloud SpringCloud Alibaba 12 月 PK 榜

前端常见手写面试题合集

helloworld1024fd

JavaScript

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

实施 GitOps 的三个关键步骤

SEAL安全

DevOps CI/CD gitops 12 月 PK 榜

从零手写react-router

helloworld1024fd

JavaScript

CPU火焰图初探-优化0.1%

FunTester

从零开始实现一个Promise

helloworld1024fd

JavaScript

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

浅谈字节码增强技术系列2-Asm与Cglib

京东科技开发者

spring asm cglib spring aop JDK 动态代理

写过vue自定义指令吗,原理是什么?.m

bb_xiaxia1998

Vue

WeOps上新啦 | WeOpsV3.13网络设备监控全新改造!

嘉为蓝鲸

自动化运维 嘉为蓝鲸 #WeOps

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

前端必会面试题汇总

loveX001

JavaScript

社招前端二面react面试题集锦

beifeng1996

React

数据驱动测试-从方法探研到最佳实践

京东科技开发者

测试 自动化测试 数据存储 自动化测试框架 测试数据构造

天翼云云WAF通过信通院云Web应用防火墙评估

Geek_2d6073

常见经典vue面试题(面试必问)

bb_xiaxia1998

Vue

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

PPC Insights 系列:高效在线匿踪查询技术

洞见科技

隐私计算 数据隐私计算 匿踪查询

常见react面试题

beifeng1996

React

鸿蒙开发实例 | 鸿蒙操作系统的前世今生

TiAmo

华为 华为云 鸿蒙开发 12月月更

昇腾携手OpenMMLab,支持海量算法仓库的昇腾AI推理部署

华为云开发者联盟

人工智能 华为云 昇腾AI 12 月 PK 榜

新来了个同事,设计模式用的是真优雅呀!代码如诗!!

小小怪下士

Java 程序员 设计模式

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