为什么输出文本框不显示我的函数给出的返回值?

时间:2013-02-05 14:10:30

标签: c#

我打算在文本框中显示结果。我的代码是这样的:

private void run_Click(object sender, EventArgs e)
{
    GeneticAlgorithm MyGeneticAlgorithm = new GeneticAlgorithm();
    GeneticAlgorithm.GAoutput ShowResult = MyGeneticAlgorithm.GA();

    string output;

    output = ShowResult;

    this.Output.Text = output;
}

class GeneticAlgorithm
{
    public void reset()
    {
        MessageBox.Show("fine");
    }
    public void Initial()
    {
        MessageBox.Show("Good");
    }
    public class GAoutput
    {
        public string Generation;
    }
    public GAoutput GA()
    {
        GAoutput OneGeneration = new GAoutput();
        OneGeneration.Generation = "bad";
        return OneGeneration;
    }
}

跑完后,它给我结果如下: WindowsFormsApplication1.GeneticAlgorithm + GAoutput

任何人都可以帮助我吗?非常感谢你!

2 个答案:

答案 0 :(得分:2)

您的ShowResult变量不是字符串,因此当您将其分配给一个字符串时,.NET会将其隐式转换为字符串。由于没有ToString()方法,它为您提供了泛型类型定义字符串(“WindowsFormsApplication1.GeneticAlgorithm + GAoutput”)。

看起来您要输出Generation字段, 字符串,所以只需更改:

output = ShowResult;

output = ShowResult.Generation;

它应该开始工作了。

此外,如果您不打算做其他事情来获得新的Generation,那么您可以真正缩短代码,一直到:

this.Output.Text = (new GeneticAlgorithm()).GA().Generation;

您可能还想考虑保留GeneticAlgorithm的本地实例,这样您就不必继续创建新实例。

答案 1 :(得分:0)

您必须确定要为这些类的实例返回的字符串。

然后为每个类重写ToString()方法以返回相应的字符串。