C# Equals()方法报错:NullReferenceException was unhandled
下面是一个C# Equals()方法的例子,执行时报错了
static void Main(string[] args)
{string name = "sandeep";string myName = null;Console.WriteLine("== operator result is {0}", name == myName);Console.WriteLine("Equals method result is {0}", myName.Equals(name));Console.ReadKey();
}
报错信息为:
NullReferenceException was unhandled
Object reference not set to an instance object.

Equals报错:NullReferenceException was unhandled
意思是空引用异常未处理;对象引用没有设置为对象实例。
我们该如何分析其原因呢?这就需要理解一下== 运算符和 Equals() 方法的区别了。
== 运算符和 Equals() 方法都用于比较两个值类型数据项或引用类型数据项。相等运算符 (==) 是比较运算符,Equals() 方法比较字符串的内容。== 运算符比较引用标识,而 Equals() 方法只比较内容。让我们看一些例子。
在下面示例中,我们将一个字符串变量分配给另一个变量。字符串是引用类型,在示例中,一个字符串变量被分配给另一个字符串变量,因此它们在堆中引用相同的标识,并且两者具有相同的内容,因此你可以获得==运算符和Equals()方法的 True 输出。
using System;namespace ComparisionExample
{class Program{static void Main(string[] args){string name = "sandeep";string myName = name;Console.WriteLine("== operator result is {0}", name == myName);Console.WriteLine("Equals method result is {0}", name.Equals(myName));Console.ReadKey();}}
}
现在运行程序,得到如图1.1所示的结果

图1.1 第一个程序的输出
让我们看另一个例子,其中两个对象变量的内容相同,但都有不同的引用。因此 == 运算符返回 false,因为它比较引用标识,而 Equals() 方法返回 true,因为它比较对象的内容。
using System;
namespace ComparisionExample
{class Program{static void Main(string[] args){object name = "sandeep";char[] values = {'s','a','n','d','e','e','p'};object myName = new string(values);Console.WriteLine("== operator result is {0}", name == myName);Console.WriteLine("Equals method result is {0}", myName.Equals(name));Console.ReadKey();}}
}
现在运行程序,得到如图1.2 所示的结果。

图 1.2 程序 2 的输出
现在让我们再回头看文章开头的出错例子,该例子表明当你将空值分配给字符串变量并使用该变量时,Equals() 方法是字符串类的扩展方法,然后 Equals() 方法获得空引用的异常,因此在调用 Equals() 方法时,你必须确保你的变量没有空值。当你的一个变量包含空值时,你应该将该变量用作 Equals() 方法的参数。

图 1.3 空引用异常
经验法则是,对于几乎所有引用类型,当你想要测试相等性而不是引用标识时,请使用 Equals,字符串除外;使用 == 比较字符串确实使事情变得更简单和更易读,但你需要记住运算符的两边必须是字符串类型的表达式才能使比较正常进行。
相关文章:
C# Equals()方法报错:NullReferenceException was unhandled
下面是一个C# Equals()方法的例子,执行时报错了 static void Main(string[] args) {string name "sandeep";string myName null;Console.WriteLine(" operator result is {0}", name myName);Console.WriteLine("Equals method result…...
Linux下C语言调用libcurl库获取天气预报信息
一、概述 当前文章介绍如何在Linux(Ubuntu)下使用C语言调用libcurl库获取天气预报的方法。通过HTTP GET请求访问百度天气API,并解析返回的JSON数据,可以获取指定城市未来7天的天气预报信息。 二、设计思路 【1】使用libcurl库进…...
“深入解析JVM:Java虚拟机原理和内部结构“
标题:深入解析JVM:Java虚拟机原理和内部结构 摘要:本文将深入解析JVM(Java虚拟机)的原理和内部结构。我们将从JVM的基础概念开始,逐步介绍其组成部分,包括类加载器、运行时数据区、字节码解释器…...
Arrays.asList() 返回的list不能add,remove
一.Arrays.asList() 返回的list不能add,remove Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为ArrayList,只能转换为AbstractList 原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没…...
命令执行漏洞
1、命令执行漏洞 1.1、简介 Django是用Python开发的一个免费开源的Web结构,几乎包括了Web使用方方面面,能够用于快速建立高性能、文雅的网站,Diango提供了许多网站后台开发常常用到的模块,使开发者可以专注于业务部分。 1.2、漏…...
Hive 中 sort by 和 order by 的区别
文章目录 数据量大小区别作用范围 在 Hive 中, SORT BY 和 ORDER BY 都用于对查询结果进行排序,但它们在实现方式和适用场景上有一些区别。 数据量大小区别 SORT BY: SORT BY 用于在 Hive 中对查询结果进行排序,它的主要特点是在…...
网络资源利用最大化:爬虫带宽优化解决方案
大家好,作为一名专业的爬虫程序员,我们都知道在爬取大量数据的过程中,网络带宽是一个十分宝贵的资源。如果我们不合理地利用网络带宽,可能会导致爬虫任务的效率低下或者不稳定。今天,我将和大家分享一些优化爬虫带宽利…...
STDF - 基于 Svelte 和 Tailwind CSS 打造的移动 web UI 组件库,Svelte 生态里不可多得的优秀项目
Svelte 是一个新兴的前端框架,组件库不多,今天介绍一款 Svelte 移动端的组件库。 关于 STDF STDF 是一个移动端的 UI 组件库,主要用来开发移动端 web 应用。和我之前介绍的很多 Vue 组件库不一样,STDF 是基于近来新晋 js 框架 S…...
C语言一些有趣的冷门知识
文章目录 概要1.访问数组元素的方法运行结果 2.中括号的特殊用法运行结果 3.大括号的特殊用法运行结果 4.sizeof的用法运行结果 5.渐进运算符运行结果 小结 概要 本文章只是介绍一些有趣的C语言知识,纯属娱乐。这里所有的演示代码我是使用的编译器是Visual Studio …...
Oracle数据库审计
1.什么是审计 审计是用来监控和记录用户的数据库操作的 2.审计级别 语句审计权限审计对象审计 3.查看审计功能是否开启: show parameter audit;相关参数: audit_file_destOS中审计信息存放位置audit_sys_operations默认值为FALSE,即不审…...
Node.js新手在哪儿找小项目练手?
前言 可以参考一下下面的nodejs相关的项目,希望对你的学习有所帮助,废话少说,让我们直接进入正题>> 1、 NodeBB Star: 13.3k 一个基于Node.js的现代化社区论坛软件,具有快速、可扩展、易于使用和灵活的特点。它支持多种数…...
全国各城市-货物进出口总额和利用外资-外商直接投资额实际使用额(1999-2020年)
最新数据显示,全国各城市外商直接投资额实际使用额在过去一年中呈现了稳步增长的趋势。这一数据为研究者提供了对中国外商投资活动的全面了解,并对未来投资趋势和政策制定提供了重要参考。 首先,这一数据反映了中国各城市作为外商投资的热门目…...
CentOS 7查看磁盘空间
CentOS如何查看硬盘大小 CentOS是一种基于Linux的操作系统,主要用于服务器端应用。在服务器管理中,硬盘大小是一个非常重要的指标,查看硬盘大小可以帮助系统管理员有效地管理硬盘空间和避免硬盘满了的情况。 方法一:使用df命令 …...
基于PHP的轻量级博客typecho
本文完成于 5 月中旬,发布时未在最新版本上验证; 什么是 typecho ? Typecho 是一款基于 PHP 的博客软件,旨在成为世界上最强大的博客引擎。Typecho 在 GNU 通用公共许可证 2.0 下发布。支持多种数据库,原生支持 Markdo…...
MySQL多表查询
1.创建student和score表 创建score表 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: 向score表插入记录的INSERT语句如下: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#…...
消息队列(12) - 定义服务器类
目录 前言设计思想 前言 之前,我们写了通信协议的具体设计,接下来我们设计服务器类 设计思想 我们先只考虑一个虚拟主机的情况下, 在一个虚拟主机的情况下,我们需要有一个session会话来帮助我们存储信息,并且既然是网络通信,那么socket关键字肯定也必不可少,我们在引入一个线…...
做正确的事 VS 正确的做事,哪个更重要?
管理大师彼得德鲁克曾在《有效的主管》一书中简明扼要地指出:“效率是以正确的方式做事,而效能则是做正确的事。效率和效能不应偏废,但这并不意味着效率和效能具有同样的重要性。我们当然希望同时提高效率和效能,但在效率与效能无…...
每日一题——寻找旋转排序数组中的最小值(I)
寻找旋转排序数组中的最小值——I 题目链接 思路 首先我们以数组[1,2,3,4,5,6,7]举个例子,经过旋转后它无非就这两种情况: 情况一:旋转过后数组变成两段有序数列: 情况二:旋转过后数组不变,仍然有序&…...
C语言每日一题:16:数对。
思路一:基本思路 1.x,y均不大于n,就是小于等于n。 2.x%y大于等于k。 3.一般的思路使用双for循环去遍历每一对数。 代码实现: #include <stdio.h> int main() {int n 0;int k 0;//输入scanf("%d%d", &n, &k);int x…...
中科亿海微浮点数转换定点数
引言 浮点数转换定点数是一种常见的数值转换技术,用于将浮点数表示转换为定点数表示。浮点数表示采用指数和尾数的形式,可以表示较大范围的数值,但存在精度有限的问题。而定点数表示则采用固定小数点位置的形式,具有固定的精度和范…...
为什么越来越多的大厂抛弃MCP,转向CLI?
一、MCP的底层原理在理解MCP的问题之前,我们先看看它的工作原理。MCP(Model Context Protocol)是一个客户端-服务器架构的协议,专门用来把外部工具(如文件系统、数据库、GitHub API)“包装”成AI模型可以调…...
思源宋体TTF终极指南:7种字重免费商用中文排版解决方案
思源宋体TTF终极指南:7种字重免费商用中文排版解决方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文项目寻找专业又免费的字体吗?思源宋体TTF是由…...
Windows Cleaner:3步解决C盘爆红问题的智能清理方案
Windows Cleaner:3步解决C盘爆红问题的智能清理方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当Windows系统运行时间超过三个月,C盘…...
Adobe-GenP:基于二进制逆向工程的Adobe CC通用许可证绕过技术解析
Adobe-GenP:基于二进制逆向工程的Adobe CC通用许可证绕过技术解析 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款基于AutoIt脚本开…...
第三章-03-练习案例:成年人判断
1.问题2.代码# 03-案例:成年人判断 # 获取键盘输入 age int(input("请输入你的年龄:"))# 通过if判断是否是成年人 if age > 18:print("您已成年,游玩需要买票,10元.")print("祝您游玩愉快") ...
终极解决方案:在Windows 11上高效实现macOS风格的三指拖拽功能
终极解决方案:在Windows 11上高效实现macOS风格的三指拖拽功能 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFinge…...
华为手机系统降级实战:为什么以及如何从HarmonyOS 2回退到EMUI 10.1?
华为手机系统降级全解析:从HarmonyOS 2回退EMUI 10.1的技术抉择 当手机系统更新推送通知弹出时,多数用户会毫不犹豫点击"立即安装"。但总有那么一群"逆行者",他们深入研究每个版本的优劣,甚至愿意冒着风险将已…...
别再纠结选哪种了!立体视觉、结构光、TOF深度相机,看完这篇保姆级对比就知道你的项目该用谁
深度相机技术选型实战指南:立体视觉、结构光与TOF的黄金分割点 当你的机器人项目需要一双"慧眼"来感知三维世界时,摆在面前的技术选项往往令人眼花缭乱。市面上主流的深度感知方案——立体视觉、结构光和TOF,就像三种不同性格的助手…...
**发散创新:用Python构建高效率基因序列比对分析工具**在生物信息学领域,**基因序列比对
发散创新:用Python构建高效率基因序列比对分析工具 在生物信息学领域,基因序列比对是核心任务之一。无论是研究人类疾病突变、进化关系,还是开发个性化医疗方案,准确高效的比对算法都至关重要。本文将带你从零开始,使…...
YOLO算法进阶:集成CBAM注意力机制以提升小目标检测精度
1. 为什么YOLO需要CBAM注意力机制? 在无人机航拍或自动驾驶场景中,小目标检测一直是个头疼的问题。想象一下,当你在300米高空拍摄的图片里找一只蚂蚁,或者在200米外识别一个交通锥筒,传统YOLO算法就像没戴眼镜的近视眼…...
