1

C# で再帰を学習しようとしています。コンソール アプリケーションでは単純なカウント ダウンを行うことができますが、ASP.NET Web アプリケーションで同じことを行う方法がわかりません。結果をリストボックスに表示したいのですが、静的関数でリストボックスにアクセスできません。

これが私のコンソールアプリケーション用のものです:

    static void Main(string[] args)
    {
        int startInt = 100;
        countDown(startInt);
        Console.ReadLine();

    }
    public static void countDown(int integer)
    {
        if (integer == 1)
        {
            Console.WriteLine(integer);
        }
        else 
        {
            Console.WriteLine(integer);
            integer--;
            countDown(integer);
        }
    }   

リストボックスに数値を表示するWebアプリケーションでこれを機能させるための助けはありますか?

4

2 に答える 2

1

静的関数から呼び出すことはなくなったので、静的にしておく必要はありません。このような countDown 関数を使用する

public void countDown(int integer)
{
    if (integer > 0)
    {
        ListBox1.Items.Add(integer.ToString());
        integer--;
        countDown(integer);
    }
} 

うまくいくはずです。入れてテストしました

int startInt = 100;
countDown(startInt);

Page_Load メソッドで、ListBox が期待どおりに表示されます。

于 2013-04-20T22:28:53.687 に答える
0

パフォーマンスの問題があるのか​​ 、それともより良い解決策があるのか​​ わかりません。しかし、これは機能し、再帰を理解するための良い例になる可能性があります。

protected void Page_Load(object sender, EventArgs e)
{
    int startInt = 100;
    form1.Controls.Add(countDown(startInt, new ListBox()));
}

public static ListBox countDown(int integer, ListBox lb)
{
    ListItem li = new ListItem();

    if (integer > 0)
    {
        li.Text = integer.ToString();
        lb.Items.Add(li);

        integer--;
        countDown(integer, lb);
    }
    return lb;

}   
于 2013-04-20T22:35:30.323 に答える