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"); } } }
改正錯誤:
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
到此這篇關於C# NullReferenceException解決案例講解的文章就介紹到這瞭,更多相關C# NullReferenceException內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!