服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C# NullReferenceException解决案例讲解

C# NullReferenceException解决案例讲解

2022-11-30 11:45keneyr C#

这篇文章主要介绍了C# NullReferenceException解决案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

最近一直在写c#的时候一直遇到这个报错,看的我心烦。。。准备记下来以备后续只需。

参考博客:

https://segmentfault.com/a/1190000012609600

一般情况下,遇到这种错误是因为程序代码正在试图访问一个null的引用类型的实体而抛出异常。可能的原因。。

一、未实例化引用类型实体

比如声明以后,却不实例化

using System;
using System.Collections.Generic;
namespace Demo
{
	class Program
	{
		static void Main(string[] args)
		{
			List<string> str;
			str.Add("lalla lalal");
		}
	}
}

C# NullReferenceException解决案例讲解

改正错误:

using System;
using System.Collections.Generic;
namespace Demo
{
	class Program
	{
		static void Main(string[] args)
		{
			List<string> str = new List<string>();
			str.Add("lalla lalal");
		}
	}
}

C# NullReferenceException解决案例讲解

二、未初始化类实例

其实道理和一是一样的,比如:

using System;
using System.Collections.Generic;
namespace Demo
{
	public class Ex
	{
		public string ex{get; set;}
	}
	public class Program
	{
		public static void Main()
		{
			Ex x;
			string ot = x.ex;
		}
		
	}
}

C# NullReferenceException解决案例讲解

修正以后:

using System;
using System.Collections.Generic;
namespace Demo
{
	public class Ex
	{
		public string ex{get; set;}
	}
	public class Program
	{
		public static void Main()
		{
			Ex x = new Ex();
			string ot = x.ex;
		}
		
	}
}

C# NullReferenceException解决案例讲解

三、数组为null

比如:

using System;
using System.Collections.Generic;
namespace Demo
{
	public class Program
	{
		public static void Main()
		{
			int [] numbers = null;
			int n = numbers[0];
			Console.WriteLine("hah");
			Console.Write(n);
			
		}
	}
}

C# NullReferenceException解决案例讲解

using System;
using System.Collections.Generic;
namespace Demo
{
	public class Program
	{
		public static void Main()
		{
			long[][] array = new long[1][];
			array[0][0]=3;
			Console.WriteLine(array);
			
		}
	}
}

C# NullReferenceException解决案例讲解

四、事件为null

这种我还没有见过。但是觉得也是常见类型,所以抄录下来。

public class Demo
{
    public event EventHandler StateChanged;
 
    protected virtual void OnStateChanged(EventArgs e)
    {        
        StateChanged(this, e);
    }
}

如果外部没有注册StateChanged事件,那么调用StateChanged(this,e)会抛出NullReferenceException(未将对象引用到实例)。

修复方法如下:

public class Demo
{
    public event EventHandler StateChanged;
 
    protected virtual void OnStateChanged(EventArgs e)
    {      
        if(StateChanged != null)
        {  
            StateChanged(this, e);
        }
    }
}

然后在Unity里面用的时候,最常见的就是没有这个GameObject,然后你调用了它。可以参照该博客:

https://www.cnblogs.com/springword/p/6498254.html

到此这篇关于C# NullReferenceException解决案例讲解的文章就介绍到这了,更多相关C# NullReferenceException内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/keneyr/article/details/87901192

延伸 · 阅读

精彩推荐
  • C#C# List介绍及具体用法

    C# List介绍及具体用法

    这篇文章主要介绍了C# List介绍及具体用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    深海地平线9572022-08-11
  • C#在C# 8中如何使用默认接口方法详解

    在C# 8中如何使用默认接口方法详解

    这篇文章主要给大家介绍了关于在C# 8中如何使用默认接口方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    码农读书6152022-10-31
  • C#C#利用ReportViewer生成报表

    C#利用ReportViewer生成报表

    这篇文章主要为大家详细介绍了C#利用ReportViewer生成报表的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    飞翔的月亮4702022-01-06
  • C#一文搞懂c# await,async执行流

    一文搞懂c# await,async执行流

    这篇文章主要介绍了c# await,async执行流的相关知识,文章讲解的非常细致,代码帮助理解和学习,感兴趣的朋友可以了解下...

    一线码农7412022-09-14
  • C#当用户退出点击浏览器后退仍可回到原来页面的解决方案

    当用户退出点击浏览器后退仍可回到原来页面的解决方案

    这篇文章主要介绍了当用户退出点击浏览器后退仍可回到原来页面的解决方案 的相关资料,需要的朋友可以参考下...

    jerrylsxu3522021-11-15
  • C#C#中Dapper的使用教程

    C#中Dapper的使用教程

    Dapper是一款轻量级ORM工具(Github),Dapper语法十分简单。并且无须迁就数据库的设计,今天通过本文给大家介绍C# Dapper的使用,感兴趣的朋友一起看看吧...

    奇然12012022-11-24
  • C#C# 10个常用特性汇总

    C# 10个常用特性汇总

    这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    一傻小冲5662022-09-23
  • C#C#实现自定义windows系统日志的方法

    C#实现自定义windows系统日志的方法

    这篇文章主要介绍了C#实现自定义windows系统日志的方法,涉及C#针对windows系统日志的创建、读写及删除技巧,非常具有实用价值,需要的朋友可以参考下...

    我心依旧7012021-10-21