错误:对象引用未初始化
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<string>
而不是 IList<string>
,因为 IList<string>
是一个接口,而 List<string>
是一个实现该接口的类。
【讨论】:
是的。我没有做一个新的 IList行:
IList<string> myList = null;
不会给你一个列表,而是一个空的参考列表可以在哪里。
IList<string> myList = new List<string>();
将正确实例化 myList,因此您可以使用它(添加、删除等)。
【讨论】:
IListIList<string> myList = new *List*<string>();
在这里,看看这个教程,以更好地理解变量初始化。
来自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
IList<String> items = new List<String>();
【讨论】:
是的,很抱歉,我在提交此内容后看到其他人的评论 =P。相信我,我们以前都这样做过。以上是关于错误:对象引用未初始化的主要内容,如果未能解决你的问题,请参考以下文章
错误提示:未处理的“System.NullReferenceException”类型的异常出现在 system.data.dll 中。 其他信息: 未将对象引用设置到对象的实例。