gpt4 book ai didi

c# - 调用不带括号的函数?

转载 作者:行者123 更新时间:2023-11-30 19:40:36 26 4
gpt4 key购买 nike

我正在查看有关创建 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();
}

...
}
}

接受这个的是什么类型的调用或函数。

Application.Suspending来自 msdn 的事件。

最佳答案

有问题的事件处理程序接受一个与方法参数匹配的委托(delegate),允许它接受一个方法组。

作为一个简单的例子,任何 Action variable 可以接受任何没有参数的 void 方法作为方法组。上面的事件处理程序的委托(delegate)可能需要一个 object。指示发件人和某种 EventArguments .

现在最常见的代表是 Action<T> , Func<T>Predicate<T> ,分别代表void方法、指定返回类型的方法和返回 bool 值的方法。也可以为它们分配 lambda。它们都有不同数量的参数。它们在某些情况下非常有用。

请注意,分配委托(delegate)并不会调用它;这可以在以后完成。代表也可以合并。还可能值得注意的是,委托(delegate)可以用局部变量做一些奇怪的事情:如果你给委托(delegate)分配类似 (name) => tempName += name 的东西。其中 tempName是局部变量,您的局部变量将在调用委托(delegate)时被修改。这是有道理的,但可能并不明显。

关于c# - 调用不带括号的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com