调用不带圆括号的函数

本文关键字:函数 圆括号 调用 | 更新日期: 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