是否可以从方法内部调用用于为该方法创建参数的函数?(C#)

本文关键字:方法 函数 参数 创建 内部 调用 是否 用于 | 更新日期: 2023-09-27 18:20:03

这有点难以解释,但我希望这个例子能澄清这一点。

假设我有一些函数调用Visible:

public bool Visible(/* Some page element */)
    {
        // Checks if something on a webpage is visible. Returns a "true" is yes, and "false" if not
    }

有可能对一些人如何等待这个函数返回true?到目前为止,我写的是这样的:

    public void WaitUntil(/*function returning bool*/ isTrue)
    {
        for (int second = 0; ; second++)
        {
            if (second >= 12)
            {
                /* Thow exception */
            }
            else
            {
                if (isTrue /*calls the isTrue function with given parameters*/)
                {
                    return;
                }
            }
        }
    }

使得这两种方法可以像一样一起使用

WaitUntil(Visible(/* Some page element */));

等待页面元素可见。。。这可能吗?

是否可以从方法内部调用用于为该方法创建参数的函数?(C#)

以下是如何做到这一点(尽管您应该考虑使用事件,因为强烈反对这种"等待")

/*Important Note: This is ugly, error prone 
          and causes eye itchiness to veteran programmers*/
public void WaitUntil(Func<bool> func)
{
    DateTime start = DateTime.Now;
    while(DateTime.Now - start < TimeSpan.FromSeconds(12))
    {
        if (func())
        {
                return;
        }
        Thread.Sleep(100);
    }
    /* Thow exception */
}
//Call
WaitUntil(() => Visible(/* Some page element*/));