Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 功能赢得';不返回任何值_C#_Visual Studio_Function - Fatal编程技术网

C# 功能赢得';不返回任何值

C# 功能赢得';不返回任何值,c#,visual-studio,function,C#,Visual Studio,Function,我有一个我认为很容易解决的问题,但因为我是个笨蛋,我不明白我做错了什么。我有两个函数:addValues()和showMessage()。我的问题在addValues()中。我有两个MessageBox,它们精确地显示了它们应该显示的内容,但是在showMessage()函数中,没有收到值,它总是告诉我日期和dias.Count为0。我做错了什么?谢谢大家! 表格1: public List<Despesas> dias = new List<Despesas>();

我有一个我认为很容易解决的问题,但因为我是个笨蛋,我不明白我做错了什么。我有两个函数:
addValues()
showMessage()
。我的问题在
addValues()
中。我有两个
MessageBox
,它们精确地显示了它们应该显示的内容,但是在
showMessage()
函数中,没有收到值,它总是告诉我日期和
dias.Count
为0。我做错了什么?谢谢大家!

表格1:

  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;
    }
public List dias=new List();
公共结构绝望
{
公共两用交通工具;
公共双食品;
公共双重投资;
公共双agua;
公共双luz;
公共双可可;
}
关于班级管理:

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;
公共双附加值(双运输、双食品)
{
Despesas dia=新Despesas();
尝试
{
直径运输=运输;
直径agua=agua;
增加直径(直径);
}
抓住
{
MessageBox.Show(“Error”,“”,MessageBoxButtons.OK,MessageBoxIcon.Error);
}
MessageBox.Show(“计数”+dias.Count);
day++;
MessageBox.Show(“+”天);
回归日;
}
公共void showMessage()
{
MessageBox.Show(“天”+天);
MessageBox.Show(“计数:”+dias.Count);
对于(int i=0;i
在评论中,您提到您实际上有两个
管理类的实例

对对象的一个实例所做的更改不会传播到该对象的其他实例(除非它是在
静态
成员上修改的,但这有点不同)

即使像代码一样修改基类成员,这也是正确的。这是因为派生类的实例化也会实例化一个新的基类对象

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

public void Foo(management myClass)
{
   ...
}
其他一些注意事项:

  • management
    对于一个类来说不是一个很好的名称,因为它不具有很强的描述性。而且,C#中的类名应该是PascalCase,所以它应该是
    management
  • 继承可能不是
    management
    Form1
    之间的正确关系。
    management
    真的是“类型”还是“是”
    Form1

你确定调用了
addValues
吗?错误似乎不在提供的代码中是的,我确定,因为调用时会显示MessageBox。你确定调用了addValues吗?我看不到消息框的定义与调用的
addValues
不同。如果在该f中设置断点Uunction,你点击了吗?看来这些是global
agua
dias
但我该怎么做?你能解释一下吗?我想是的。你能澄清一下是什么让你困惑吗?我不明白什么是公共的void Foo(管理myClass)是否…@MiguelPT只是一个接受对象类型参数的示例函数。也许我可以解释一下方法/参数是如何工作的?