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

c# - 方法和匿名类型

我知道您不能从方法返回匿名类型,但我想知道 Select 扩展方法如何返回匿名类型。它只是一个编译器技巧吗?

编辑

假设 L 是一个列表。这是如何运作的?

返回类型是 IEnumerable<'a> 其​​中 'a = new {String Name}

0 投票
6 回答
11500 浏览

c# - C#:是否可以在匿名方法中声明局部变量?

是否可以在匿名 c# 方法中有一个局部变量,即在下面的代码中我只想执行一次计数。

匿名函数是否有“让”?

更新:请注意,我在此语句之后添加了几个 Where 子句,因此我无法通过选择关闭。

/尼尔斯

0 投票
2 回答
3114 浏览

c# - 如何规避在匿名方法块中使用 out 参数?

以下方法无法编译。Visual Studio 警告“不得在匿名方法中使用 out 参数”。该WithReaderLock(Proc action)方法采用delegate void Proc().

获得这种行为的最佳方法是什么?(请不要提供关于线程安全字典的建议,这个问题通常是为了解决 out 参数问题)。

0 投票
3 回答
6108 浏览

c# - EventHandlers 和匿名委托 / Lambda 表达式

我希望通过匿名委托和 lambda 表达式来清除一些事情,这些表达式用于在 C# 中为事件处理程序创建一个方法,至少对我自己而言。

假设我们有一个添加匿名委托或 lambda 表达式的事件(对于可以使用较新版本 .NET 的幸运人群)。

我读到过去人们已经忘记了仍然具有阻止类被垃圾收集的处理程序的事件。如果不只是在类中将 SomeEvent 设置为 null ,将如何删除添加的处理程序。以下不是一个全新的处理程序吗?

我可以看到将匿名委托或 lambda 表达式存储在变量中。但是,至少对我来说,这似乎违背了能够简单而简洁地添加事件处理程序的整个目的。

再说一次,我明白你可以这样做......

但我更有趣的是从事件中删除动态创建的方法。希望有人可以为我阐明这一点。谢谢!

0 投票
3 回答
3458 浏览

c# - 代表和 Lambdas 和 LINQ,天哪!

作为一名相当初级的开发人员,我遇到了一个突出我缺乏经验和知识漏洞的问题。如果这里的序言太长,请见谅。

我发现自己在一个项目中需要学习一些新的(对我来说)技术,包括 LINQ(为了这个项目的目的到 OBJECTS 和到 XML)等等。到目前为止,我所读到的所有内容都表明,要使用 LINQ,我需要完全理解以下内容(委托、匿名方法和 Lambda 表达式)。

好的,现在乐趣来了。过去我曾在使用 .NET 事件模型时使用过代表,但大部分细节对我来说是隐藏的(感谢 Microsoft!)。我知道,在基本层面上,委托实例是指向方法的指针(我知道,这太简单了)。

我了解匿名方法本质上是一种内联未命名方法,通常(如果不是专门)创建为委托的目标。

我也了解 lambda 以不同的方式使用以简化语法,并可用于将简单的匿名方法指向委托。

请原谅我的任何描述与此处不符,这是我理解这些主题的基本水平。

所以,挑战:

  1. 如果我对这些项目的理解甚至接近,谁能告诉我至少在基本层面上?我不是在寻找复杂的深奥细节,只是基础知识(目前)。

  2. 在将 LINQ 应用到项目中以达到合理效果之前,我需要在多大程度上真正理解这些概念?我想完全理解它并愿意花时间。在我需要制作一些作品之前,我可能根本没有时间完全了解所有这些东西。

  3. 任何人都可以向我指出一些解释这些主题并将它们应用于“现实世界”示例的好文章,以便我可以了解主题的基础知识和它们的应用吗?我所说的现实世界的意思是,我如何在“客户和发票”而不是抽象的“矢量和形状”或“动物和奶牛”的上下文中使用它。出于演示目的,该场景可能有些人为,但希望不是严格的学术性的。我在网上和书中找到了许多示例,但似乎很少有“简单的英语”解释。

提前感谢大家的耐心、时间和专业知识。

0 投票
2 回答
1662 浏览

javascript - 将参数传递给匿名 Javascript 函数

考虑下面的代码:

为什么我传递给匿名函数的 id 在第一次调用后会被一次调用延迟?

只有在 Firefox 中似乎是这种方式,在 IEUploadComplete中以正确的顺序接收 id。

在第二个循环中,我可以在 send(data) 行停止调试器并确认 id 实际上是 1,但是当我到达时,UploadComplete它在那个参数中结果是 0 :(

编辑:找到解决方案:
在 FireBug 中禁用控制台日志记录。

0 投票
1 回答
350 浏览

c# - IEnumerable 中求和、平均、连接等项目的实现选项

我正在寻找最短的代码来创建对 IEnumerable 中的项目执行常见操作的方法。

例如:

  1. 对属性求和 - 例如 IEnumerable<IPupil> 中的 IPupil.Age
  2. 平均一个属性 - 例如 IEnumerable<IPupil> 中的 IPupil.Age
  3. 构建 CSV 字符串 - 例如 IEnumerable<IPupil> 中的 IPupil.Name

我对解决这些示例的各种方法感兴趣:foreach(长手)、委托、LINQ、匿名方法等......

抱歉措辞不佳,我无法准确描述我所追求的!

0 投票
3 回答
405 浏览

c# - 这还是闭包吗?

testit() 方法是一个闭包。aString 已超出范围,但 testit() 仍然可以在其上执行。testit2() 使用的变量没有超出范围(mystring),但也没有传递给 testit2()。testit2() 是否被视为闭包?

在第二个示例中,可以在方法之外更新 mystring,这些更改将反映在 testit2() 中。这不像普通方法,它只能将 mystring 作为参数捕获。

0 投票
4 回答
4657 浏览

c# - 为什么我不能在调试器中编辑包含匿名方法的方法?

因此,每次我在一个我不太正确的方法中编写了一个 lambda 表达式或匿名方法时,我都不得不重新编译并重新启动整个应用程序或单元测试框架以修复它。这很烦人,而且我最终浪费的时间比我最初使用这些构造所节省的时间还要多。很糟糕,如果可以的话,我会尽量远离它们,尽管 Linq 和 lambdas 是我最喜欢的 C# 功能之一。

我想有一个很好的技术原因为什么会这样,也许有人知道?此外,有谁知道它是否会在 VS2010 中修复?

谢谢。

0 投票
2 回答
783 浏览

c# - 如何取消注册匿名处理程序?

C# 2.0 有一个简洁的特性,称为匿名函数。这主要用于事件:

现在,假设 Button 是一个静态成员,那么向它添加委托将被视为非托管资源。通常,我必须在重新注册之前取消注册处理程序。这是 GUI 编程的一个非常常见的用例。

匿名函数的准则是什么?框架会自动注销吗?如果有,什么时候?