问题标签 [anonymous-delegates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

c# - 匿名代表如何在 ControllerActionInvoker.InvokeActionMethodWithFilters 中工作

我正在尝试从 PHP 迁移到 ASP.NET,并在此过程中尝试了解 MVC 的工作原理,但是我坚持使用 ControllerActionInvoker.InvokeActionMethodWithFilters,因为我不明白发生了什么。

我正在努力的片段如下:

完整的源代码可以在以下 URL 中找到: https ://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/ControllerActionInvoker.cs#L371

特别是,我不确定以下内容在做什么:

因为我以前从未见过包含以下内容的行:continuation = () =>

我似乎也无法在 Google 上找到答案,因为它不将 = () => 识别为搜索词。

我对以下具有相似语法的代码片段感到困惑:

来自 PHP 背景,我以前没有见过这种语法,而且我在网上阅读的资源也没有真正让我明白。

基于以下 SO 问题: delegate keyword vs. lambda notation

如果我要重写以下...

会不会是这样...

第二个片段也是如此......

如果我没记错的话应该是...

还是我仍然没有得到它?

0 投票
1 回答
33 浏览

c# - C# 的 AnonymousDelegate 帮助

我需要帮助

VB$AnonymousDelegate_0<给我一个错误

0 投票
1 回答
790 浏览

c# - 字段类型比字段更难访问

我有以下声明:

我正在像这样消费它:

在不同的班级。它不编译,它说“不一致的可访问性:字段类型......比字段 Helper.myFunc 更难访问” 我知道它与匿名声明有关,但如何解决?

0 投票
1 回答
62 浏览

c# - 带参数的函数委托 c#

我正在寻找使用函数委托调用带参数的方法的方法。

您可以在该位置使用函数委托,而不是调用 processOperationB。但寻找可以实现以下方式的任何方式。

0 投票
1 回答
739 浏览

c# - 通用方法:没有从 int 到 IComparable 的装箱转换

我正在研究一种二进制搜索算法,它具有以下参数:

现在,当我传递这些论点时:

它说 int 类型不能用作参数 F(我的印象是泛型类型与正在传递的类型无关)并且没有从 int 到 IComparable 的“装箱”转换。

我试图做的事情:基本上,我希望这个方法接受可以是各种数字类型(整数、双精度等)的搜索键,所以在通用方法中我试图声明两种类型。

关于此代码: func 委托代表对象的属性,即 car.Name (string)、car.Wheels(int),它们是不同类型的。我有点希望根据正在传递的 propertyFields 类型以某种方式推断键数据类型,但这似乎太复杂了,所以我尝试让它 F Key 接受各种类型,并确保我正在传递正确的类型。

我不知道这一切听起来是否令人困惑,但如果您对我的任何代码有疑问,请随时提问。

编辑:当我调用 BinarySearch 方法时发生错误。

编辑2:对于propertyField,我将其作为参数传递:c => c.Longitude(或任何其他对象属性)。

0 投票
0 回答
34 浏览

c# - 如何将 SelectedValueChanging 事件添加到组合框

我需要继承 ComboBox 以添加新事件 OnSelectedValueChanging()。当用户尝试更改组合框的当前选定值时,应触发此事件。此事件也应该是可取消的(例如,用户可以在 FormClosing 事件中使用 e.cancel)

0 投票
2 回答
60 浏览

c# - 无法将匿名委托分配给签名委托

我正在寻找一种方法来将列表中的不同代表分配给MethodInfo's 而无需事先了解有关返回类型的信息。下面是我正在使用的代码。评论提供了有关正在发生的事情的更多信息。这是一段很长的代码,但我已经尽可能地减少了它。

主要片段

支持类/代码

如果您需要有关支持类的更多信息,请参阅下面的代码。此外,这是一个独立的程序,应该可以按原样运行。

0 投票
1 回答
251 浏览

c# - 当本地 stackalloc 上的数据时,匿名委托不为每次迭代使用新的本地

在 C# 中使用匿名delegates 时,CLR 将在堆上为使用的变量生成本地(例如当前范围内的变量)的副本。对于当前作用域的每个声明变量,这样的局部变量将被放入堆中。

您可以在此示例中看到此行为:

该程序的输出是(最后 5 个条目的顺序可能会有所不同,而在第一个条目中,也可能得到小于 5 的数字。):

在方法中调用时,C# 应始终生成本地的新副本。这在本示例中按预期工作:

输出:

这是有问题的情况:但是,将变量分配给保留区域时它不起作用:stackalloc

输出:

使用常规局部变量时 - 只需替换call上面示例中的方法:

输出:

这种情况使我不信任delegateC# 中的匿名 s - 因为我不明白 C# 何时不会搞砸我对匿名delegates 的调用。

我的问题:为什么 C# 不跟踪stackalloc有关匿名delegates 的空间?我知道 C# 没有跟踪。我想知道为什么它不跟踪,如果它使用常规变量。

我使用 .NET Core 2.1 和 C# 7.3,包括/unsafe这些示例的开关。