错误:未初始化对象引用

时间:2010-10-25 19:44:34

标签: c# string ilist

我在C#中有以下代码:

的IList <string&GT; myList = null;
myList.Add(温度);

temp是一个在其他地方被decalred的字符串,并且不是null(我检查过它)。我在myList.Add(temp)行继续收到以下错误; “对象引用未初始化为对象的实例”

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

更新问题:我已经尝试过新的 IList的<string&GT; myList = new List <string&gt;();
 正如你们大多数人建议的那样,从Intellisense中获取以下内容:

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

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

4 个答案:

答案 0 :(得分:4)

您需要先初始化列表:

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

请注意,在=的右侧,您必须写List<string>而非IList<string>,因为IList<string>是一个界面,而List<string>是一个类实现该接口。

答案 1 :(得分:1)

该行:

IList<string> myList = null;

没有给你一个列表,但是列表可以是一个空的引用。

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

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

答案 2 :(得分:0)

在这里,看一下本教程,以便更好地理解变量初始化。

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

Person Michael = new Person();

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

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

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

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

答案 3 :(得分:0)

  

更新问题:我已经尝试过新的Ilist(),正如大多数人所建议的那样,从Intellisense中获取以下内容:无法创建抽象类或接口的实例Systems.Collections.Generic.Ilist

您无法创建接口的实例。的IList&LT; T&GT;是一个界面。就像其他人在这里所说的那样,你用一个继承接口的具体类的实例初始化它。注意他们如何使用新的List&lt; String&gt;()而不是新的IList&lt; String&gt;();

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