0

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

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

任何人都可以帮助我吗?太感谢了!

4

2 回答 2

2

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

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

output = ShowResult;

output = ShowResult.Generation;

它应该开始工作。

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

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

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

于 2013-02-05T14:12:21.570 回答
0

您必须决定为这些类的实例返回什么字符串。

然后重写每个这些类的ToString()方法以返回适当的字符串。

于 2013-02-05T14:12:32.070 回答