在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

kafka日志写入logstash

Rubble

Logstash Kafk 8月日更

【Flutter 专题】77 图解历史 Android Native 项目接入 Flutter Module

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

互联网寒冬!大厂Android开发面试解答

欢喜学安卓

android 程序员 面试 移动开发

Druid 独立服务器方式部署文档

HoneyMoose

Docker 集群安装时的服务和进程分配

HoneyMoose

kubernetes入门:使用kubeadm搭建master,亲测无异常

小鲍侃java

8月日更

大佬分享开发经验!2021年华为Android面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

Vue进阶(七):走近 package.json

No Silver Bullet

Vue npm 8月日更

跟我学AI建模:分子动力学仿真模拟之DeepMD-kit框架

华为云开发者联盟

AI 仿真 分子动力学 分子 建模

为什么将网络虚拟化与实现服务器虚拟化不同?

九河云安全

Java开发热门前沿知识!Java集合中的基本数据结构

策划Java工程师

Java 程序员 面试 后端

怎样评估选型一个企业软件产品?

明道云

Flutter 的 runApp 与三棵树诞生流程源码分析

工匠若水

flutter android 8月日更

Java开发面试问题,Java中高级核心知识全面解析(2)

策划Java工程师

Java 程序员 面试 后端

从 Docker 中安装启动 Druid

HoneyMoose

手撸二叉树之平衡二叉树

HelloWorld杰少

数据结构与算法 8月日更

十大排序算法--归并排序

Ayue、

排序算法 8月日更

Java开发指南!Redis高频面试笔记:基础

策划Java工程师

Java 程序员 面试 后端

Java开发经验谈:动手造轮子:实现一个简单的-AOP-框架

策划Java工程师

Java 程序员 面试 后端

netty系列之:netty架构概述

程序那些事

Java Netty nio 程序那些事

Python代码阅读(第3篇):列表的最小公倍数

Felix

Python 编程 Code Programing 阅读代码

oeasy教您玩转vim - 2 - # 使用帮助

o

vim

架构实战营 毕业设计

👈

架构实战营

oeasy教您玩转vim - 3 - # 打开文件

o

架构实战营 学习总结

👈

架构实战营

Java开发视频教程!MySQL8

策划Java工程师

Java 程序员 面试 后端

Java开发面试准备,【备战秋招冲击大厂

策划Java工程师

Java 程序员 面试 后端

oeasy教您玩转vim - 1 - # 存活下来 🥊

o

秒杀系统设计

Vincent

架构训练营

手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

Regan Yue

redis Linux windows 8月日更

中国大学 MOOC Android 性能优化:冷启动优化总结

有道技术团队

大前端 安卓 网易有道

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