调用不带圆括号的函数
本文关键字:函数 圆括号 调用 | 更新日期: 2023-09-27 17:50:14
我正在看创建Windows 8.1应用程序的"Contose Cookbook"培训。
通过第一个实验室,我看到了类似variable += function;
的东西。这个函数没有括号,据我所知,你可以创建没有括号的函数,也就是属性,但是你必须用。
这是一个类,我发现这个:
namespace ContosoCookbook
{
sealed partial class App : Application
{
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
}
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
...
}
}
什么类型的调用或函数接受这个
应用程序。
所讨论的事件处理程序接受一个与方法参数匹配的委托,从而允许它接受一个方法组。
作为一个简单的例子,任何Action
变量都可以接受任何没有参数的void方法作为方法组。上述事件处理程序的委托可能使用object
来指示发送方和某种EventArguments
。
最常见的委托是Action<T>
, Func<T>
和Predicate<T>
,它们分别代表void方法,具有指定返回类型的方法和返回布尔值的方法。它们也可以被赋值为。它们都有不同数量的参数。它们在某些情况下非常有用。
请注意,分配委托不会调用它;那可以以后再做。委托也可以组合。值得注意的是,委托可以对局部变量做一些奇怪的事情:如果你用(name) => tempName += name
这样的东西分配一个委托,其中tempName
是一个局部变量,那么你的局部变量将在调用委托时被修改。这是有意义的,但可能不是很明显。
除了Magus的回答,这是不是调用函数,它传递了一个对函数的引用,以后可能会被调用。
这是一个事件绑定代码也许你想检查这个Events