很多时候我不得不创建结构列表来存储我在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,我只是不明白为什么。
这个项目与我完成和工作的其他类似项目唯一不同的是,这个项目有两种形式,我认为这与我的问题无关。
答案 0 :(得分:4)
在重载构造函数上,我有一条消息,显示每次添加新值时列表值的计数,并且猜测值始终为1,我只是不明白为什么。
那是因为每次你创建mng
的新实例(顺便说一下,应该给出一个更有意义和更传统的名称),你就会创建一个 new < / em> list,开头为空。您正在为其添加一个项目,因此计数为1.
如果您想在mng
的多个实例之间共享一个列表,则可能使dias
变量保持静态(在这种情况下,它不是与任何特定实例相关联)或您可以将引用传递给构造函数。
或者,您可能根本不想创建mng
的新实例 - 也许您应该在现有实例上调用方法?没有更多的背景,很难知道。
作为旁注,我强烈建议您避免使用公共字段和可变结构(Despesas
类型)。