请告诉我代码的问题
ArrayList dtMessages = new ArrayList();
while ((reader.Read()))
{
String temp = reader[0].ToString() + "," + reader[1].ToString() + "," + reader[2].ToString();
dtMessages.Add(temp);
}
我收到错误“对象引用未设置为对象的实例。”
抱歉,我是c#的新手。请耐心等待。感谢
编辑:我只是想补充一点。 dtMessages变量声明为类变量。它没有在任何函数内声明。你觉得这是问题吗?
编辑:代码
namespace Faye
{
public partial class _Default : System.Web.UI.Page
{
public List<String> dtMessages=new List<String>();
private List<String> LoadMessages()
{
while ((reader.Read()))
{
String temp = reader[0].ToString() + "," + reader[1].ToString() + "," + reader[2].ToString();
dtMessages.Add(temp);
}
}
}
}
将静态添加到dtMessages的声明中没有区别
答案 0 :(得分:0)
听起来您正试图从静态方法访问对象成员。
这样的事情:
class Program {
private List<string> myList = new List<string>();
static void Main () {
// will throw error
myList.Add("String!");
}
}
请改为使用:
class Program {
private static List<string> myList = new List<string>();
static void Main () {
myList.Add("String!");
}
}
我可能在这里错了,因为我觉得第一个不能编译。
答案 1 :(得分:0)
正如@Anthony所说,它的第一个例子没有编译,所以这不是问题。
如果抛出异常的行是
dtMessages.Add(temp);
,例外是“对象引用未设置为对象的实例。”,这意味着dtAccess为null,因此尚未初始化,但这很奇怪,因为有一行:
ArrayList dtMessages = new ArrayList();
另一种可能性是某处有一项任务,例如:
dtMessages = null;
所以我会检查所有对dtMessages寻找作业的引用。
答案 2 :(得分:0)
尝试这一点,为要设置的列表创建一个自动属性,并使用临时列表收集数据,然后将其分配给属性。通过这种方式启动临时列表,然后填充数据并分配给等待数据的属性:)
namespace Faye
{
public partial class _Default : System.Web.UI.Page
{
public List<String> dtMessages { get; set; } //made property available
private List<String> LoadMessages()
{
var tempList = new List<string>();
while ((reader.Read()))
{
String temp = reader[0].ToString() + "," + reader[1].ToString() + "," + reader[2].ToString();
tempList.Add(temp);
}
dtMessages = tempList; //assign the temp list to the property now
}
}
}
如果出现上述错误,那么您的SqlReader为null或您引用的一个或多个索引为null。我会调试并验证它们都有有效值。
答案 3 :(得分:0)
下一个:
1-读者对象为空,你在行中得到例外:
while ((reader.Read()))
2- reader对象不包含3个元素,在这种情况下,您将收到ArgumentOutOfRangeException
读者中的一个对象为null,并且由于.ToString()方法而引发异常
我会把钱花在3上