函数不会返回任何值

时间:2014-12-30 18:41:45

标签: c# visual-studio function

我有一个问题,我认为可能很容易解决,但因为我是一个C#noob,我无法理解我做错了什么。我有两个功能:addValues()showMessage()。我的问题出在addValues()。我有两个MessageBox显示了他们应该显示的内容,但在showMessage()函数中没有收到值,它总是告诉我那天和dias.Count是0.我做错了什么?谢谢!

在Form1上:

  public List<Despesas> dias = new List<Despesas>();
    public struct Despesas
    {
        public double transportes;
        public double alimentacao;
        public double vestuario;
        public double agua;
        public double luz;
        public double educacao;
    }

课堂管理:

class management : Form1
{
    int day=0;

public double addValues(double transportes, double alimentacao)
{
    Despesas dia = new Despesas();
    try
    {
        dia.transportes = transportes;
        dia.agua = agua;
        dias.Add(dia);
     }
     catch
     {
         MessageBox.Show("Error", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     MessageBox.Show("Count " + dias.Count);
     day++;
     MessageBox.Show("" + day);
     return day;
}

 public void showMessage()
 {
     MessageBox.Show("Day " + day);
     MessageBox.Show("Count: " " + dias.Count);
     for (int i = 0; i < day; i++)
     {
         MessageBox.Show("Agua: " + dias[i].agua + "\nTransportes: " + dias[i].transportes);
     }
 }

1 个答案:

答案 0 :(得分:2)

在评论中,您提到您实际上有两个<{1}}类的实例。

对象的一个​​实例的更改不会传播到该对象的其他实例(除非它在management成员上被修改,但有点不同)。

即使您修改了基类成员,也是如此。这是因为派生类的实例化也实例化了一个新的基类对象。

解决方案是只使用一个static对象实例,并根据需要传递它。您可以像其他任何类型一样执行此操作:

management

其他几点说明:

  • public void Foo(management myClass) { ... } 不是一个非常好的名字,因为它不是很具描述性。此外,C#中的类名应为PascalCase,因此它应为management
  • 继承可能不是Managementmanagement之间的正确关系。 Form1真的是&#34;&#34;类型的&#34;或&#34;是&#34; management