无法向列表添加值(计数始终为 1) - C#

本文关键字:列表 添加 | 更新日期: 2023-09-27 18:35:50

很多时候,我不得不创建结构列表来在 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++;
    }

在表格 1 上:

 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) - C#

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

这是因为每次创建mng的新实例(顺便说一下,应该给它一个更有意义和更常规的名称)时,您都会创建一个列表,该列表一开始是空的。您要向其添加一个项目,因此计数为 1。

如果要在mng的多个实例之间共享单个列表,则可能应该将dias变量设置为静态(在这种情况下,它不与任何特定实例相关联),或者可以将引用传递到构造函数中。

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

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