[英]Assigning a string to a ArrayList in c#
请告诉我代码的问题
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的声明中添加static没什么区别
听起来您正在尝试从静态方法访问对象成员。
像这样:
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!");
}
}
我在这里可能是错的,因为我觉得第一个没有编译。
正如@Anthony所假定的那样,它的第一个示例未编译,因此这不是问题。
如果抛出异常的行是
dtMessages.Add(temp);
并且例外是“对象引用未设置为对象的实例。”,这意味着dtAccess为null,因此尚未初始化,但这很奇怪,因为存在以下行:
ArrayList dtMessages = new ArrayList();
另一种可能性是某处有一个作业,例如:
dtMessages = null;
因此,我将检查对dtMessages的所有引用以查找分配。
试试看,为要设置的列表创建一个自动属性,并使用临时列表收集数据,然后将其分配给该属性。 这样,将启动临时列表,然后将其填充数据并分配给等待数据的属性:)
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。 我将调试并验证它们均具有有效值。
下一个:
1-reader对象为null,您在行中得到异常:
while ((reader.Read()))
2-reader对象不包含3个元素,在这种情况下,您将收到ArgumentOutOfRangeException
3-阅读器中的对象之一为null,并且由于.ToString()方法而引发异常
我会把钱放到3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.