无法向List添加值(Count始终为1) - C#

时间:2014-12-30 16:40:37

标签: c# visual-studio list

很多时候我不得不创建结构列表来存储我在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 个答案:

答案 0 :(得分:4)

  

在重载构造函数上,我有一条消息,显示每次添加新值时列表值的计数,并且猜测值始终为1,我只是不明白为什么。

那是因为每次你创建mng的新实例(顺便说一下,应该给出一个更有意义和更传统的名称),你就会创建一个 new < / em> list,开头为空。您正在为其添加一个项目,因此计数为1.

如果您想在mng的多个实例之间共享一个列表,则可能使dias变量保持静态(在这种情况下,它不是与任何特定实例相关联)或您可以将引用传递给构造函数。

或者,您可能根本不想创建mng的新实例 - 也许您应该在现有实例上调用方法?没有更多的背景,很难知道。

作为旁注,我强烈建议您避免使用公共字段和可变结构(Despesas类型)。