如何终止递归函数并返回值

Ric*_*cky 3 c# asp.net

我正在尝试使用递归函数在ASP.NET页面中找到TextBox控件.找到此控件后,我想终止该函数并将其返回.

我的主要问题是我无法停止递归函数并返回控件.

这是我的代码:

//execute recursive function to find a control in page by its id
TextBox textbox = GetTextBoxByID(controlCollection, id);

//recursive function
private TextBox GetTextBoxByID(ControlCollection controlCollection, string id)
{
    foreach (Control control in controlCollection)
    {
        if (control is TextBox)
        {
            TextBox tb = (TextBox)control;

            if (tb.ID == id)
            {
                //return selected texbox and terminate this recursion
                return tb;
            }
        }

        if (control.HasControls())
        {
            GetTextBoxByID(control.Controls, id);
        }
    }

    //no control found return null
    return null;
}
Run Code Online (Sandbox Code Playgroud)

wal*_*her 8

你错过了另外一张支票,就在这里:

if (control.HasControls())
{
    var result = GetTextBoxByID(control.Controls, id);
    if (result != null)
        return result;
}
Run Code Online (Sandbox Code Playgroud)