错误:对象引用未初始化

Posted

技术标签:

【中文标题】错误:对象引用未初始化【英文标题】:error: Object reference not initialised 【发布时间】:2010-10-25 19:44:33 【问题描述】:

我在 C# 中有以下代码:

IList<string> myList = null; myList.Add(temp);

temp 是一个在其他地方贴花且不为空的字符串(我检查了它)。我在 myList.Add(temp); 行不断收到以下错误。 “对象引用未初始化为对象的实例”

我在这里做错了什么???

更新问题:我已经尝试过新的 IList<string> myList = new List<string>(); 正如你们大多数人建议的那样,从 Intellisense 获得以下信息:

无法创建抽象类或接口 Systems.Collections.Generic.Ilist 的实例。

感谢您之前的回答。现在我遇到了一个特殊的问题。我的数据阅读器中有一个空字符串。 (sql server表中的1个字段为空。即string.Empty)。有没有办法在阅读器内部摆脱这种情况(我的意思是 rdr 这里)??

【问题讨论】:

if(!string.IsNullOrEmpty(temp)) myList.Add(temp); 【参考方案1】:

你需要先初始化列表:

IList<string> myList = new List<string>();
...

请注意,= 右侧必须写 List&lt;string&gt; 而不是 IList&lt;string&gt;,因为 IList&lt;string&gt; 是一个接口,而 List&lt;string&gt; 是一个实现该接口的类。

【讨论】:

是的。我没有做一个新的 IList();谢谢。【参考方案2】:

行:

IList<string> myList = null;

不会给你一个列表,而是一个空的参考列表可以在哪里。

IList<string> myList = new List<string>();

将正确实例化 myList,因此您可以使用它(添加、删除等)。

【讨论】:

IList 不是一个类,而是一个接口,所以你不能创建它的实例。但是,您可以创建一个 List 的实例,它实现了 IListIList&lt;string&gt; myList = new *List*&lt;string&gt;();【参考方案3】:

在这里,看看这个教程,以更好地理解变量初始化。

来自http://www.csharphelp.com/2007/03/objects-classes-in-c/

Person Michael = new Person();

在第一行代码中,我们指定了整数变量age。在第二行中,我们首先指定了我们需要创建的对象的类型,然后是对象的名称,然后是一个名为 new 的保留运算符,最后我们再次键入类名,然后是括号“()”。

让我们一步一步地理解它。在开始时指定类名告诉 C# 编译器为该类型分配内存位置(C# 编译器知道类的所有变量、属性和方法,因此它将分配正确的内存量)。然后我们在类名后面加上我们想要的对象变量名。其余代码“=new Person();”调用对象的构造函数。我们稍后会讨论构造函数,但现在要了解构造函数是一种在创建对象时初始化对象变量的方法,而不是在创建对象之后。例如,我们在上一节中创建的 Michaelobject 可以这样写:

Person Michael = new Person(20, “Brown”);

这里我在参数列表中指定了变量的值,所以我在创建对象时初始化了变量。但是为了使这段代码正常工作,我们需要在 Person 类中指定构造函数,我不会在这里这样做,因为构造函数部分将在后面的文章中介绍。我想你对类和对象有了很好的介绍,我将在下一篇文章中完成,我将讨论构造函数和构建块作用域。我希望你从我的文章中得到新的东西。

【讨论】:

【参考方案4】:

更新问题:我已经按照你们大多数人的建议尝试了 new Ilist() 并从 Intellisense 获得以下信息:无法创建抽象类或接口 Systems.Collections.Generic.Ilist 的实例

您不能创建接口的实例。 IList 是一个接口。就像其他人在这里所说的那样,您使用继承接口的具体类的实例对其进行初始化。注意他们如何使用 new List() 而不是 new IList();

IList<String> items = new List<String>();

【讨论】:

是的,很抱歉,我在提交此内容后看到其他人的评论 =P。相信我,我们以前都这样做过。

以上是关于错误:对象引用未初始化的主要内容,如果未能解决你的问题,请参考以下文章

未将对象引用设置到对象的实例

未将对象引用设置到对象的实例都可能由哪些原因引起的

错误提示:未处理的“System.NullReferenceException”类型的异常出现在 system.data.dll 中。 其他信息: 未将对象引用设置到对象的实例。

引用未初始化的集合

公共静态对象引用未设置错误

对象引用未设置为对象的实例...错误?