东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

Visual Basic 和 C#在空类型上的不同

  • 2007-09-19
  • 本文字数:942 字

    阅读完需:约 3 分钟

在.NET 1.0 发布的时候,VB 和 C#没有太多的区别,但是随着第四个版本发布的临近,两者之间的区别逐渐拉开。今天让我们一起看看那些在空类型上可能会困扰开发人员的小地方。

空类型是在.NET 2.0 发布的时候被引入的。使用泛型(Generics),任何值类型都可以被包装成空类型,从而可以有空值。在从前,要达到这个效果只可以通过创建一个定制的类,或者将值封装然后指定给类型对象的一个变量。

C#很快增加了对空类型的语言支持。但是 VB 一直在忙于从 VB 转换到 VB.NET 方面的后遗症,无暇像 C#那样顾及到这一块,虽然可以用空值,但只能在 API 的级别。在 9 版本里,Visual Basi 会对空类型全面支持。它会使用一个和 C#非常接近的语法,但是语义上会有很大的区别。在 C#中,比较操作要么会返回 true,要么返回 false。但是在 VB 中,因为空值的引入,比较操作可能会返回 true,false 或者 null 等。

a=null, b=null Operator C# Result VB Result == true Nothing != false Nothing > false Nothing < false Nothing >= false Nothing <= false Nothing a=1, b=null Operator C# Result VB Result == false Nothing != true Nothing > false Nothing < false Nothing >= false Nothing <= false Nothing 从上表可以看出在 C#中出现的一个非常有意思的异常,在 a 和 b 都是空的时候,a==b 返回的是 true,但是 a>=b 和 a<=b 则返回的是 false。

在遇到检查 Boolean 值的时候,C#是非常清晰易懂的。另外一方面,VB 不得不以某种方式把自己的三状态逻辑映射到 Boolean 值。为了满足像 IF、While 和 Untile 这样的 Boolean 检查,VB 是将 null 等同于 false 处理的。这会导致下面所列出的很有意思的现象:

a = null, b = null <br></br>If a=b Then <br></br>'skipped <br></br>Else <br></br>'this line is executed <br></br>End if <p>If Not (a=b) Then </p><br></br>'skipped <br></br>Else <br></br>'this line is executed <br></br>End if(a=b) 和 Not (a=b) 都返回 null 值,也都被认定为 false。

真正地理解这些语言中细微的差别和不一致,对于使用空类型的开发人员是非常有必要的,否则就会有 Bug 的产生。

查看英文原文: Visual Basic and C#: Differences in Nullable Types

2007-09-19 01:17700

评论

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

手把手教你如何扩展(破解)mybatisplus的sql生成 | 京东云技术团队

京东科技开发者

mybatis sql MyBatisPlus Mybatis-Plus 企业号11月PK榜

云时代,如何保障运维安全?

尚思卓越

运维 网络安全 堡垒机

SAM + 用于文本到图像修复的稳定扩散

3D建模设计

Stable Diffustion 稳定扩散 文本生成图像

EC2的置放群组

孤虹

亚马逊云 EC2 置放群组

新方向!文心一言X具身智能,用LLM大模型驱动智能小车

飞桨PaddlePaddle

人工智能 文心一言

为什么OpenAPI是未来企业数字化转型的决定性因素

华为云PaaS服务小智

云计算 软件开发 华为云

【论文解读】针对生成任务的多模态图学习

合合技术团队

人工智能 机器学习 深度学习 论文 多模态学习

直播实时数仓基于DataLeap开放平台在发布管控场景的业务实践

字节跳动数据平台

大数据 数据中台 数据安全 数据研发 企业号11月PK榜

一分钟带你了解光模块

小魏写代码

Deckset for Mac(MD文档转幻灯片软件) 2.0.27中文激活版

mac

苹果mac Windows软件 Deckset 演示文稿制作软件

《央国企数字化产业赋能图谱》编制及申报开启

信通院IOMM数字化转型团队

IOMM 央国企数字化转型 央国企数字化产业赋能图谱

微服务架构下的调试进阶:多环境多服务调试实践与策略

Apifox

架构 微服务 后端 多服务 多环境

分布式数据库 GaiaDB-X 与宝兰德应用服务器完成兼容互认

Baidu AICLOUD

分布式数据库

百度CTO王海峰:文心一言用户规模已达7000万

飞桨PaddlePaddle

文心一言4.0

DataGrip 2023 Mac(多引擎数据库管理工具)

展初云

Mac datagrip 数据库软件

一起学Elasticsearch系列-Mapping

Java随想录

Java 大数据 搜索 ES

Topaz Photo AI(图片降噪软件)特别版下载mac/win

影影绰绰一往直前

Topaz Photo AI下载 Topaz Photo AI破解 Topaz Photo AI特别版

为什么在财务共享中心建设初期人员不降反增?

用友BIP

财务共享

如何在本地运行稳定扩散模型

3D建模设计

Stable Diffusion Ai绘图 文本到图像

另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国

威廉META

谈谈压测方案的那点事 | 京东物流技术团队

京东科技开发者

测试 性能测试 压力测试 企业号11月PK榜 大促备战

源译识 | 译文分享:Elasticsearch诉Amazon商标侵权案

开放原子开源基金会

另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国

鳄鱼视界

线上SQL超时场景分析-MySQL超时之间隙锁 | 京东物流技术团队

京东科技开发者

MySQL 数据库 间隙锁 企业号11月PK榜 SQL超时

Project Office X for Mac项目管理工具

展初云

Mac 项目管理软件 Project Office X

PDF Reader Pro 3.0 for mac(pdf阅读器)

展初云

Mac pdf阅读器 PDF Reader Pro

Valentina Studio Pro(数据库管理软件)特别版下载mac/win

影影绰绰一往直前

Valentina Studio Pro Valentina Studio Pro下载 Valentina Studio Pro破解

stable diffusion为什么能用于文本到图像的生成

3D建模设计

Stable Diffustion 文本到图像 AI 绘图

火山引擎ByteHouse联合Apache Airflow,让数据管理更加高效

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号11月PK榜

Amazon EC2 Serial Console 现已在其他亚马逊云科技区域推出

亚马逊云科技 (Amazon Web Services)

API cli iam Amazon EC2

远程运维的定义以及优点详细讲解-行云管家

行云管家

运维 IT运维 远程运维 运维软件 协同运维

Visual Basic和C#在空类型上的不同_.NET_Jonathan Allen_InfoQ精选文章