在c#中为StringList分配一个字符串

时间:2011-07-28 23:28:36

标签: c# string arraylist

请告诉我代码的问题

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的声明中没有区别

4 个答案:

答案 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上