簡體   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