问题标签 [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.
c# - C# 中的匿名委托和泛型列表
你能解释一下下面的代码吗:
通过这种方式在通用列表中查找对象有什么意义?他可以简单地迭代列表。
这个委托方法如何调用 list 的每个元素?
注意:如果这有一个通用名称,你能更新我的问题的标题吗?
谢谢 !
.net - 使用匿名委托进行事件处理
作为记录:我在这里发现了一个类似的问题,但我必须详细说明这个主题。
我的具体情况是这样的:
在 Silverlight 4 中,该myFrameworkElement.FindName("otherElementName")
方法现在似乎工作正常,但我遇到了一个问题。null
当元素显然还没有添加到可视化树时,它仍然会返回。
但是现在我需要在DependencyProperty
自PropertyChangedCallback
定义UserControl
处理程序中使用此功能。在此范围内,尚不确定 UserControl 是否已添加到可视化树中。但是我必须对树中的另一个元素执行某个操作。当元素已经可用时,它可以并且应该立即完成。如果没有,则必须在可用时立即完成。所以我想出了这个扩展方法,我可以这样调用:
扩展方法的代码如下:
如您所见,我必须使用匿名委托,因为我需要处理程序的值name
和resultAction
处理程序内部的值。然后我取消订阅处理程序内部的事件,因为我是一个聪明而干净的人并且不希望泄漏。我也不想在这里用一些花哨的 WeakEventFactories 或类似的东西来破坏车轮上的苍蝇。
现在到目前为止,这工作顺利。但我有一些问题。
- 这通常是一种足够干净的方法来取消订阅处理程序内的事件处理程序吗?还是最终会杀死一只无辜的小狗?
- 由于在匿名委托中使用外部范围变量,是否会出现一些问题,例如一些泄漏?
- 是否存在线程同步问题会导致我“错过”
Loaded
事件?在这种特殊情况下,应该只涉及 Silverlight 的 UI 调度程序线程。但是,如果它仍然是一个问题,和/或如果我在非 UI 相关的场景中需要类似的功能,那么 f1x0r 的最佳方法是什么?
已经感谢您的耐心和时间阅读我冗长的阐述。;-)
c# - C# 中的 lambda 表达式?
我对这些比较陌生,有人可以解释(以下代码的)意义,还是提供指向有关 lambda 表达式的一些有用信息的链接?我在测试中遇到以下代码,我想知道为什么有人会这样做:
我的直觉告诉我,这很简单,不是错误,但我对这些表达方式了解得不够多,无法理解为什么要这样做。
c# - 功能功能
如果我有:
和通用版本
有没有办法将 SomeType 的强类型 Func 转换为 T 的 Func?到目前为止,我发现的唯一方法是尝试将它与模拟函数结合起来:
我知道如何使用 Expression.Lambda,但我需要使用普通函数,而不是表达式树
编辑 - 使用 .net 3.5 使用 Matthews 示例,并提供明确的使用细节。
我仍然追求的是在返回值时如何从 Func Of concreteType 到 Func Of T 。
我只是想克服编译器错误 - 并且很高兴 T 有可能成为不同的类型并引发运行时错误。
然后在存储库中消费:
c# - 如何在 C# 2.0 中使用匿名泛型委托
我有一个名为 NTree 的类:
当我尝试将 Traverse 与匿名委托一起使用时,我得到:
参数“2”:无法从“匿名方法”转换为“NisConverter.TreeVisitor”
编码:
然而,这不会产生错误:
...
我试图将“箭头括号”和所有内容都放在匿名委托中,但它不起作用。请帮我!
谢谢和BR-马蒂
c# - 请帮我理解匿名代表?
我从 Microsoft 下载了 VCSharpSample 包并开始阅读 Anonymous Delegates。我或多或少可以理解代码在做什么,但我不明白它背后的原因。也许如果你给我一些例子,它会导致更清晰的代码和更容易维护,那么我可以围绕它。:)
你能帮我吗?
c# - Dispatcher.Invoke 与匿名委托在 Silverlight 但不是 WPF
在 Silverlight 4 中,我有一个自定义服务类,它有一个异步 Completed 事件。在 Completed 事件中,我获取返回的数据并通过以下方式调用填充方法:
在BeginInvoke
SL4 中工作,但是当我将它移植到 WPF 时,我收到以下错误:
无法将 lambda 表达式转换为类型“System.Delegate”,因为它不是委托类型
我尝试将其更改为内联、匿名、参数化的委托:
但是,这会产生相同的编译时错误。
知道如何让它在 WPF 中工作吗?重构以使用BackgroundWorker
对我来说不是一个选项。
c# - 使用 Dictionary 使用匿名函数/委托映射工厂方法以加快查找速度?
目前,我有一个像这样的静态工厂方法:
我不以任何方式缓存它们的原因是因为 BookResource 对文化很敏感,这可能会在调用之间发生变化。文化的变化需要反映在归还的书籍对象中。
执行这些 if 语句可能会成为速度瓶颈。但是如果我们将书籍代码映射到匿名函数/委托呢?类似于以下内容:
我怎样才能让这些Create() => {
线条真正起作用?
当有 <50 个书本代码(因此 <50 个 if 语句)时,这在速度方面值得吗?
这是一个类似的问题,但不幸的是,作者没有发布他的代码Enum,Delegate Dictionary collection where delegate 指向一个重载的方法
更新
做了一些性能基准 ifs vs delegates。我随机选择了单元代码,并为这两种方法使用了相同的种子。委托版本实际上稍微慢一些。这些代表正在造成某种开销。我使用发布版本进行运行。
c# - C#匿名代表效率/安全
我有代表的进度表:
应用哪种方式更好(更有效或更安全) - 匿名代表这样调用:
或使用这样的单独方法:
c# - 将匿名委托传递给线程......为什么会这样?
在我的程序中,我们拆分了大量需要在四个线程中查看的数据。
我们的编码标准要求我们符合 StyleCop,事实上,StyleCop 要求以下:
SA1410:从匿名方法中删除括号,因为委托的参数列表为空。
这样做会给我这个编译器错误:
以下方法或属性之间的调用不明确:“System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)”和“System.Threading.Thread.Thread(System.Threading.ThreadStart)”
我已经研究了 ThreadStart 和 ParameterizedThreadStart 对象,但我无法弄清楚如何使用这些对象中的任何一个来完成我需要完成的工作。
我的问题:匿名代表如何工作?他们编译成什么?最后,我将不得不在没有匿名代表的情况下完成这项工作,但我不知道从哪里开始。
谢谢您的帮助,
寻找者