C# NullReferenceException解决案例讲解
作者:keneyr 时间:2023-01-24 07:38:10
最近一直在写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");
}
}
}
改正错误:
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");
}
}
}
二、未初始化类实例
其实道理和一是一样的,比如:
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;
}
}
}
修正以后:
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;
}
}
}
三、数组为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);
}
}
}
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);
}
}
}
四、事件为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
来源:https://blog.csdn.net/keneyr/article/details/87901192
标签:C#,NullReferenceException
0
投稿
猜你喜欢
Java后台通过Collections获取list集合中最大数,最小数代码
2023-03-15 19:53:05
Android中ProgressDialog的dismiss()与cancel()方法的区别
2021-07-27 04:14:24
Java 多线程并发编程提高数据处理效率的详细过程
2021-06-29 04:19:39
IDEA配置使用Maven Helper插件的方法(详细配置)
2022-07-17 03:09:21
Android5.0中多种水波纹效果的实现代码
2023-09-23 04:42:53
SpringBoot之Controller的使用详解
2023-02-16 21:18:30
Android Loop机制中Looper与handler详细分析
2023-01-13 04:40:56
C#集合之链表的用法
2022-02-07 13:38:34
Spring Boot详解创建和运行基础流程
2022-01-28 19:57:05
java复制文件和java移动文件的示例分享
2023-09-17 08:18:06
用Java实现简单计算器功能
2023-03-29 17:44:16
java向多线程中传递参数的三种方法详细介绍
2023-07-11 21:52:55
React-Native之Android(6.0及以上)权限申请详解
2023-07-28 01:56:55
详解spring-boot集成elasticsearch及其简单应用
2021-08-26 01:09:58
C#实现跨线程操作控件方法
2023-06-30 13:47:39
Android使用Xutils3进行断点下载的实例
2021-08-13 21:59:27
Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)
2023-10-31 23:08:55
java实现超市商品库存管理平台
2022-05-25 10:09:20
Java 实现分布式服务的调用链跟踪
2023-11-25 10:24:55
AndroidStudio实现微信界面设计
2022-09-16 22:45:40