NullReferenceException(未将对象引用到实例)

NullReferenceException(未将对象引用到实例)最近一直在写c#的时候一直遇到这个报错,看的我心烦。。。准备记下来以备后续只需。参考博客:https://segmentfault.com/a/1190000012609600一般情况下,遇到这种错误是因为程序代码正在试图访问一个null的引用类型的实体而抛出异常。可能的原因。。一、未实例化引用类型实体比如声明以后,却不实例化usingSystem;usingSys…

大家好,欢迎来到IT知识分享网。

最近一直在写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");
		}
	}
}

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");
		}
	}
}

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;
		}
		
	}
}

 

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;
		}
		
	}
}

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);
			
		}
	}
}

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);
			
		}
	}
}

 

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21025.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信