C# Equals()方法报错:NullReferenceException was unhandled

这篇具有很好参考价值的文章主要介绍了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.

C# Equals()方法报错:NullReferenceException was unhandled,java,jvm,开发语言


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所示的结果

 

C# Equals()方法报错:NullReferenceException was unhandled,java,jvm,开发语言


图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 所示的结果。

C# Equals()方法报错:NullReferenceException was unhandled,java,jvm,开发语言

 
图 1.2 程序 2 的输出

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

C# Equals()方法报错:NullReferenceException was unhandled,java,jvm,开发语言

 
图 1.3 空引用异常

经验法则是,对于几乎所有引用类型,当你想要测试相等性而不是引用标识时,请使用 Equals,字符串除外;使用 == 比较字符串确实使事情变得更简单和更易读,但你需要记住运算符的两边必须是字符串类型的表达式才能使比较正常进行。文章来源地址https://www.toymoban.com/news/detail-636737.html

到了这里,关于C# Equals()方法报错:NullReferenceException was unhandled的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C#】【Equals和ReferenceEquals】关于对象和值的问题

    在学习C#中的记录类型时,对出现的Equals和ReferenceEquals得到的不同结果表示不理解,随即进行相关资料查找。   值类型 == : 比较两者的“内容”是否相同,即“值”是否一样 Equals:比较两者的“内容”是否相同,即“值”是否一样 ReferenceEquals:返回false,因为会对值类型进行装

    2024年02月08日
    浏览(40)
  • OpenCV4 报错error:‘ CV_* ’was not declared in this scope 解决方法汇总

    最近用opencv4.5.2配vins,总是报错,每次都要改一大堆,在此总结 在头文件中添加 #include opencv2/imgproc/imgproc_c.h 在头文件中添加 #include opencv2/calib3d/calib3d_c.h 在头文件中添加 #include opencv2/imgproc/types_c.h,或者改成cv::COLOR_GRAY2BGR 依次改为 cv::THRESH_BINARY_INV cv::CHAIN_APPROX_SIMPLE cv::RETR

    2024年02月09日
    浏览(53)
  • videoPlayer视频报错:First video frame not zero... WindowsVideoMedia error unhandled Color Standard...

    1、报错信息:First video frame not zero: 2 (0.066667s). Result may be out of sync. Please make sure tracks all start at 0 in 2、报错原因( from ChatGPT4 ): 3、修复过程 重新设置视频的导入格式 Unity 2021.3.18:【Project】-【选中视频文件】-【Inspctor】-【Codec】 设置为 H264 WindowsVideoMedia error unhandled Colo

    2024年02月03日
    浏览(39)
  • vue ui启动报错:node:event:491 throw er; // Unhandled ‘error‘ event……errno: -4058

    错误 :使用vue ui启动时报错,无法启动vue cli脚手架 原因 :笔者使用的vue-cli@4.*版本,版本过低 试用方案 : 使用 netstat -aon|findstr \\\"8080\\\" 查找端口号占用,但发现并没有占用。 发现缺失文件后,找到path所指定的位置,在里面新建locales文件,也没成功 使用 npm install -g @vue/cli

    2024年02月11日
    浏览(42)
  • what(): NCCL Error 1: unhandled cuda error解决方法

    运行项目:ACL2021的一篇工作,LM-BFF (Better Few-shot Fine-tuning of Language Models) https://github.com/princeton-nlp/LM-BFF 遇到环境问题。 我的机器环境如下: 产生如下报错 NCCL Error 1: unhandled cuda error 这是pytorch 、cudatoolkit、cuda驱动的版本不一致导致的问题。 我的cuda版本是11.4,根据 CUDA版本

    2024年02月10日
    浏览(37)
  • WARNING: There was an error checking the latest version of pip.报错及解决方法

    警告:检查最新版本的pip时出错。   需要升级pip版本才可以安装其他模块,我们只需要升级pip 在命令操作窗口输入python -m pip install --upgrade pip Successfully uninstalled pip-19.1.1(成功卸载旧版本:22.3.1) Successfully installed pip-20.0.2(成功安装新版本:23.0.1)   在命令操作窗口输入

    2024年02月05日
    浏览(62)
  • UE 创建c++class报错Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffff

    删除出错的sourece的c++文件(公有私有文件夹删干净) 删除这四个文件夹 在引擎启动文件重新生成文件 笔者22岁正寻找UE方向工作如有机会可以发送至1530229118@qq.com 手机号码18061605859  

    2024年02月12日
    浏览(42)
  • 正确使用 equals 方法

    Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 举个例子: 运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。: 不过更推荐使用 java.util.Objects#equals (JDK

    2024年02月14日
    浏览(43)
  • Java中的equals方法

    \\\"==\\\"是一个比较运算符。 \\\"==\\\"既可以判断基本类型,又可以判断引用类型。 \\\"==\\\"如果判断基本类型,判断的是值是否相等。eg: int i=10; double d=10.0 \\\"==\\\"如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象。 equals是object类中的方法,只能用于判断 引用类型 。 equa

    2024年02月03日
    浏览(38)
  • equals方法的用法(java)

    equals 和 == 易错使用案例集合

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包