繁体   English   中英

在C#中将字符串分配给ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM