当我启动我的项目时(在Debug或Release,Visual Studio 2015中),我收到此错误:
我试图修复我的.NET框架,但我没有成功,我无法调试此错误,因为它不是代码错误。
哪个会导致它?
我该如何修理?
如何防止这种情况?
答案 0 :(得分:0)
当您尝试访问没有值或技术上具有值NullReferenceException
的对象/方法/变量时,会出现null
,例如:
using System;
using System.Collections.Generic;
public class Example
{
public static void Main(string[] args)
{
int value = Int32.Parse(args[0]);
List<String> names;
if (value > 0)
names = new List<String>();
names.Add("Major Major Major");
}
}
来源:https://msdn.microsoft.com/en-us/library/system.nullreferenceexception(v=vs.110).aspx
在上面的代码中。程序将创建一个名为names
的字符串列表,然后在 IF - 语句中它将实例化名称列表,因为列表将被实例化的唯一方法是IF a < strong> CONDITIONAL 语句成功,通常知道条件语句并不总是正确。
因此,代码将是这样的,创建一个名为names的字符串列表并等于null
(因为程序员不等于这样的任何东西; List<string> names;
而不是这个;
List<string> names = new List<string>();
上面的代码,我给你也可以导致NullPointerException
(如果删除了if语句及其中的代码)。
所以要解决这个问题,我们需要完全删除If语句并实例化名称列表,所以代码现在看起来像这样。
using System;
using System.Collections.Generic;
public class Example
{
public static void Main(string[] args)
{
int value = Int32.Parse(args[0]);
List<String> names = new List<String>();
names.Add("Major Major Major");
}
}
另一个例子:
string i;
if(i == "hello") {/*Do something*/}
// Causes error because I is not set to any value or null
// (null is mostly the default variable given to any object/method/variable that is not specified to contain any value specified by the programmer)
修正:
string i;
i = "hi";
if(i == "hello") {/*Do something*/}
// Will not throw exception but returns false because I is set to hi and not hello
//Or you could just do this int i = 1; and remove the "i = 1" part
P.S:我希望你在回答你的问题之前没有想到这一点,否则我解释和回答你的问题的努力将毫无用处。