是否可以从方法内部调用用于为该方法创建参数的函数?(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 */));
等待页面元素可见。。。这可能吗?
以下是如何做到这一点(尽管您应该考虑使用事件,因为强烈反对这种"等待")
/*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*/));