簡體   English   中英

無法將值添加到列表(計數始終為1)-C#

[英]Can't add values to List (Count is always 1) - C#

很多次,我不得不創建結構列表以將數據存儲在C#中。 但是這一次,我遇到了一個問題,我似乎無法將值添加到列表中。 由於我已經做過類似的項目,所以我不太明白為什么,但是如果有人可以幫助我,我將不勝感激。

class mng
{
    int day = 0;
    List<Despesas> dias = new List<Despesas>();

    public struct Despesas
    {
        public double transportes;
        public double agua;
    }        

    public mng ()
    {
    }

 public void addValues(double transportes, double agua)
    {            
        Despesas dia = new Despesas();
        try
        {
            dia.transportes = transportes;
        }
        catch
        {
            MessageBox.Show("Error", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

         try
        {
            dia.agua = agua;
         }
        catch
        {
            MessageBox.Show("Error", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

         try
         {
             dias.Add(dia);
         }
         catch
         {
             MessageBox.Show("Error", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }

        MessageBox.Show("Added: " + dias.Count);
        day++;
    }

在Form1上:

 private void button1_Click(object sender, EventArgs e)
    {
   try{     
    double transportes = Convert.ToDouble(txtTransportes.Text);
    double agua = Convert.ToDouble(txtAgua.Text);
    mng mngV = new mng();
             mngV.addValues(transportes, agua);
       }
   catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
       }

在重載構造函數上,我有一條消息,該消息顯示每次添加一個新列表值時列表值的計數,並且猜測值始終為1,而我只是不明白為什么。

與該項目和我已經完成的其他類似項目不同的是,該項目具有兩種形式,我認為與我的問題無關。

在重載構造函數上,我有一條消息,該消息顯示每次添加一個新列表值時列表值的計數,並且猜測值始終為1,而我只是不明白為什么。

那是因為每次創建一個新的mng實例(順便說一句,應該給它一個更有意義的常規名稱)時,都是在創建一個列表,該列表以空為開頭。 您要向其中添加一項,因此計數為1。

如果要在mng多個實例之間共享單個列表,則可以使dias變量靜態(在這種情況下,它與任何特定實例都沒有關聯),或者可以將引用傳遞給構造函數。

另外,也許您根本根本不想創建mng的新實例-也許您應該在現有實例上調用方法 沒有更多的上下文很難知道。

作為附帶說明,我強烈建議您避免使用公共場所和易變結構(您的Despesas類型)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM