问题标签 [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 投票
2 回答
2236 浏览

c# - 是否可以获取 Action 的方法体(文本)?

我有一种情况,我已经将许多Action对象排入队列,并且我有一个线程池在每个Action. 但是,如果应用程序在队列为空之前关闭,我想在关闭之前记录队列中剩余的内容。

是否可以从Action对象中获取方法体?我可以MethodBody从 中看到该对象Action.Method.GetMethodBody(),但我看不到将其作为字符串输出的方法。

有什么想法,还是我疯了?

编辑:还有一件事;我也想保留状态信息。也就是说,我还想保留Action.

0 投票
2 回答
729 浏览

c# - 方法如何等待匿名委托完成?

我有以下查找联系人的代码片段(例如):

更新:
这是 ContactManager:

在触发该事件之前,该Search方法不会返回(我没有意识到这是匿名方法/委托的标准行为)。

但是,我很困惑为匿名委托生成的代码如何在Search完成时向该方法发出信号。

我尝试在 ContactManager.Address 属性中放置一个 Sleep(5000),因为我认为它可能来自 ContactManager 只是很快返回,但这没有什么区别。

任何人都可以解释一下吗?

0 投票
2 回答
512 浏览

c# - 何时从事件中删除匿名代表?

如果我写类似

何时(如果有的话)从事件中删除匿名代表?

作为一个简单的例子,我可以编写这个程序

我反复按“Enter”时的输出是

……等等。我可以添加该行

之后p.Foo()但当然它没有效果,因为我正在删除一个完全不同的匿名代表。

那么这有什么关系呢?有没有办法完全删除这些匿名代表?例如,我使用以下表达式提取数据的异步 Silverlight 应用程序有什么影响

? 我假设这些类型的回调不是使用事件实现的,但当然不可能(?)说出来。

如果不仔细考虑匿名代表是否危险?

0 投票
2 回答
626 浏览

c# - 从类实例的派生类中删除(-=)Form#FormClosed 事件添加(+=)?

我有一个派生自 System.Windows.Form.Form 的“MyForm”。MyForm 处理我在构造函数中设置的处理程序的 FormClosed 事件。实例化的 MyForm 对象是否可以使用 -= 成功删除我的 MyClass#FormClosed 处理程序?如果这很重要,我正在使用匿名方法来连接我的 FormClosed 事件。

0 投票
1 回答
1766 浏览

c# - 获取匿名方法的目标

以下方法是基类的一部分,它使派生类能够指定事件应通知谁。

为了只通知特定的接收者,该方法使用如下:(接收者当然必须订阅)

这只会让代表“指向”接收者。

我的问题是,当我使用匿名方法订阅 SomethingChanged 事件时,当我使用此事件通知订阅它的对象时,它不起作用。

是否有可能获取包含匿名方法的实例?还是我应该使用完全不同的方法来解决我的问题?

0 投票
2 回答
296 浏览

c# - 为什么转换为泛型类型比 C# 中的显式转换慢?

我正在用 C# 构建一个消息调度映射,并且主要是在使用一些不同的方法。我对我正在测量的性能差异感到好奇,但从 IL 来看,原因并不明显。

消息映射:

然后我有一个 Messages 的类层次结构,类似于 WPF 中的 EventArgs,例如:

和具有处理函数的观察者类:

我正在测量 2 种添加和调用处理程序的方法。我正在包装委托调用,因此我可以获得一些概念类型安全性,这就是性能差异。

方法一:监听器调用

方法2:监听器调用

这两种方法都构建了一个 MessageHandler 委托,该委托进行强制转换和相同的方法调用,但是调用使用方法 #2 构建的委托有点慢,即使生成的 IL 看起来相同。转换为泛型类型是否有额外的运行时开销?是类型约束吗?一旦解决了泛型类型,我希望 JITted 代表是相同的。

感谢您提供任何信息。

0 投票
3 回答
2540 浏览

c# - 匿名代表的“动态”?

我想知道是否有可能使变量的“动态”类型适用于匿名代表。

我尝试了以下方法:

但后来我收到以下错误消息:

Cannot convert anonymous method to type 'dynamic' because it is not a delegate type

不幸的是,以下代码也不起作用:

如果我想创建一个接受任何类型的委托的方法,即使是内联声明的方法,我该怎么办?

例如:

0 投票
2 回答
1229 浏览

c# - 无法从高阶函数的用法中推断出类型参数

我有以下高阶函数:

并试图这样称呼它:

编译器给了我“无法从用法中推断出类型参数”错误。但以下工作:

我想知道有什么区别? string.IsNullOrWhiteSpace已经是具有完全相同签名的非重载函数。

如评论中所述,以下内容也有效,但仍无法解释在这种情况下类型推断失败的原因:

0 投票
4 回答
178 浏览

c# - 这种类型的委托叫什么(C#)

我有这些代码行。

现在我怎么称呼这个声明printer del = delegate { Method(); };

当然它不能称为匿名方法,因为这里我有一个命名方法。

0 投票
1 回答
784 浏览

c# - 匿名委托事件侦听器会阻止垃圾收集吗?

我不确定在以下情况下是否能够对子窗口进行垃圾收集。

  1. 用户控件包含“显示弹出”命令
  2. 该命令创建一个子窗口,并为“Closed”事件添加一个匿名侦听器。

由于PopupCommand的委托表面上仍然包含对局部child变量的引用,因此每次调用都会PopupCommand泄漏内存吗?或者垃圾收集器会以某种方式认识到它可以child在关闭后处理吗?


相关:从 C# 中的事件和垃圾收集中分离匿名侦听器