1

我在 C# 中有以下代码:

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

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

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

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

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

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

4

4 回答 4

4

您需要先初始化列表:

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

请注意,=您必须在右侧写List<string>not IList<string>since IList<string>is an interface,而List<string>is a class that implements that interface。

于 2010-10-25T19:45:39.287 回答
1

该行:

IList<string> myList = null;

不会给你一个列表,而是一个空的引用列表可能在哪里。

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

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

于 2010-10-25T19:51:00.313 回答
0

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

来自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 类中指定构造函数,我不会在这里这样做,因为构造函数部分将在后面的文章中介绍。我想你对类和对象有了很好的介绍,我将在下一篇文章中完成,我将讨论构造函数和构建块作用域。我希望你从我的文章中得到新的东西。

于 2010-10-25T19:53:51.080 回答
0

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

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

IList<String> items = new List<String>();
于 2010-10-25T20:01:47.137 回答