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 に答える