问题标签 [anonymous-methods]

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 回答
464 浏览

delphi - 匿名方法转换为指针

谁能解释为什么下面的代码失败了?

我假设匿名方法可以简单地通过指针转换和使用,但这似乎是一个错误的假设。此外,任何解释匿名方法如何在后台实现的资源都会很棒。TIA。

0 投票
6 回答
2030 浏览

c# - C# 到 VB - 如何转换此匿名方法/lambda 表达式?

您如何将其转换为 VB(使用 .NET 4.0 / VS2010)?

我想可能是这样的:

但它说 Function 不会在所有代码路径上返回值。

想法?

0 投票
4 回答
9089 浏览

c# - 通过匿名方法分配匿名类型的属性

我是 C# 功能方面的新手,如果问题很蹩脚,我很抱歉。

鉴于以下错误代码:

此代码产生以下合理的编译器错误:

无法将 lambda 表达式分配给匿名类型属性

上面的代码会将委托设置为 FileName 属性。但这不是我的目标。我希望代码像这样工作,但不命名方法:

有什么建议么?

0 投票
2 回答
626 浏览

c# - 行动vs匿名方法问题

我回答了一个问题,又提出了另一个问题,为什么以下不起作用?我不明白。编译器说:无法转换匿名方法做字符串。但为什么?

0 投票
3 回答
1557 浏览

c# - 如何以匿名方法破坏 WinDbg?

标题有点说明了一切。通常的 SOS 命令!bpmd没有名字就没有多大用处。

我的一些想法:

  • 转储每个方法,然后在找到相应的 MethodDesc 时 使用!bpmd -md
    • 据我所知,在现实世界的使用中不实用。即使我编写了一个宏来将转储限制为匿名类型/方法,也没有明显的方法可以将它们区分开来。
  • 使用 Reflector 转储 MSIL 名称
    • 在处理动态程序集和/或 Reflection.Emit 时没有帮助。Visual Studio 无法在此类场景中读取本地变量是我首先转向 Windbg 的全部原因......
  • 在VS中设置断点,等待它命中,然后使用无创技巧更改为Windbg
    • 尝试从 VS 分离会导致它挂起(与应用程序一起)。我认为这是因为托管调试器是通过线程注入实现的“软”调试器,而不是标准的“硬”调试器。或者它可能只是 Silverlight 特有的一个 VS 错误(我几乎不会遇到第一个)。
  • 在已知调用匿名方法的其他位置设置断点,然后单步执行
    • 我的备用计划,但如果此问答揭示了更好的方法,我宁愿不采用它
0 投票
3 回答
1651 浏览

c# - 如何识别 System.Reflection 中的匿名方法

如何通过反射识别匿名方法?

0 投票
2 回答
2814 浏览

c# - anonymos方法的丑事和优点-C#

我被要求解释匿名方法的丑陋之处和优点。

我解释了可能

丑陋的东西

好处

我们可以使用匿名方法生成线程安全代码:示例

但实际上我不知道它是否是线程安全的。我被要求证明它的合理性。谁能帮我理解 (1)匿名方法的优点(2)上面的代码线程安全吗?

0 投票
1 回答
2436 浏览

c# - C# -Closure -Clarification

我正在学习 C#。我的意思是闭包吗 a construct that can adopt the changes in the environment in which it is defined.

例子 :

该变量id在 FindPersonByID() 的范围内声明,但我们仍然可以访问id匿名函数内的局部变量(即)delegate(Person x) { return x.id == id; }

(1) 我对闭包的理解是否正确?

(2) 我们可以从闭包中获得什么优势?

0 投票
2 回答
1948 浏览

c# - 如何调用从匿名方法创建的 MethodInfo?

上一个问题中,我询问了如何MethodInfo从 Action 委托中获取 a。此操作委托是匿名创建的(来自 Lambda)。我现在遇到的问题是我不能调用MethodInfo,因为它需要一个MethodInfo属于的对象。在这种情况下,由于代表是匿名的,因此没有所有者。我收到以下异常:

System.Reflection.TargetException :对象与目标类型不匹配。

我正在使用的框架(NUnit)要求我使用反射来执行,所以我必须在提供的墙壁内玩。我真的不想诉诸于Emit创建动态程序集/模块/类型/方法只是为了执行我已经拥有的委托。

谢谢。

0 投票
1 回答
1091 浏览

c# - IEnumerable的C#匿名方法变量范围问题

我正在尝试遍历所有组件,并且对于那些实现 ISupportsOpen 的人允许打开一个项目。问题是当调用匿名方法时,组件变量始终是相同的元素(来自 IEnumerable 的外部范围)

请问应该怎么解决?