我打算在文本框中显示结果。我的代码是这样的:
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
任何人都可以帮助我吗?非常感谢你!
答案 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()方法以返回相应的字符串。