Questions tagged «delegates»

代表们可以参考几个概念。一个对象可以依靠另一个(委托)来执行功能。委托还可以使用程序查找规则来调度自调用,从而引用编程语言功能。在C#中,委托定义了触发事件时要调用的方法。

2
5年后,还有什么比“最快的C ++代表”更好的了?
我知道“ C ++委托”这一主题已经死了,http://www.codeproject.com和http://stackoverflow.com都深深地覆盖了这个问题。 通常,似乎唐·克拉格斯顿(Don Clugston)最快的代表是许多人的首选。还有其他一些流行的。 但是,我注意到其中大多数文章都是较旧的(大约在2005年),并且许多设计选择似乎都是考虑到了诸如VC7之类的旧编译器。 我需要一个音频应用程序非常快速的委托实现。 我仍然需要它具有可移植性(Windows,Mac,Linux),但我只使用现代编译器(VC9,VS2008 SP1和GCC 4.5.x中的编译器)。 我的主要标准是: 它一定要快! 它必须与较新版本的编译器向前兼容。对于Don的实现,我对此表示怀疑,因为他明确声明它不符合标准。 可选地,KISS语法和易用性很高兴 多播会很好,尽管我坚信围绕任何委托库构建它确实很容易 此外,我真的不需要异国情调的功能。我只需要很好的旧方法指针即可。无需支持静态方法,自由函数或类似的东西。 到目前为止,推荐的方法是什么?仍使用Don版本吗?还是有关于另一种选择的“社区共识”? 我真的不想使用Boost.signal / signal2,因为就性能而言这是不可接受的。对QT的依赖也不可接受。 此外,我在谷歌搜索时看到了一些较新的库,例如cpp-events,但是我找不到用户的任何反馈,包括关于SO的反馈。

8
自动创建空的C#事件处理程序
无法在C#中触发没有附加处理程序的事件。因此,在每次调用之前,有必要检查事件是否为null。 if ( MyEvent != null ) { MyEvent( param1, param2 ); } 我想保持我的代码尽可能干净,并摆脱那些空检查。我认为这不会对性能产生太大影响,至少在我看来不会如此。 MyEvent( param1, param2 ); 现在,我通过为每个事件手动添加一个空的内联处理程序来解决此问题。这很容易出错,因为我需要记住要这样做。 void Initialize() { MyEvent += new MyEvent( (p1,p2) => { } ); } 有没有一种方法可以使用反射和一些CLR魔术自动为给定类的所有事件生成空处理程序?
71 c#  events  delegates  clr 

8
手动创建委托与使用Action / Func委托
今天,我正在考虑声明以下内容: private delegate double ChangeListAction(string param1, int number); 但是为什么不使用这个: private Func<string, int, double> ChangeListAction; 或者如果ChangeListAction没有返回值,我可以使用: private Action<string,int> ChangeListAction; 那么用delegate关键字声明委托的好处在哪里? 是因为.NET 1.1,随着.NET 2.0的出现Action<T>,还是随着.NET 3.5的出现Func<T>?
71 c#  delegates  action  func 

9
设计应用程序时如何使用Func <>和Action <>?
我可以找到的有关Func &lt;&gt;和Action &lt;&gt;的所有示例都很简单,如下所示,您将看到它们在技术上如何工作,但我希望看到它们用于解决以前无法解决或可能解决的问题的示例中仅以更复杂的方式来解决,即我知道它们的工作原理,并且可以看到它们的简洁和强大,因此我想从更大的意义上理解它们,以解决它们所解决的各种问题以及如何在解决方案中使用它们。应用程序设计。 您以什么方式(模式)使用Func &lt;&gt;和Action &lt;&gt;解决实际问题? using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestFunc8282 { class Program { static void Main(string[] args) { //func with delegate Func&lt;string, string&gt; convert = delegate(string s) { return s.ToUpper(); }; //func with lambda Func&lt;string, string&gt; convert2 = s =&gt; s.Substring(3, 10); //action …

6
简单委托(委托)与多播委托
我已经阅读了许多文章,但是我仍然不清楚我们通常创建的普通委托与多播委托之间的区别。 public delegate void MyMethodHandler(object sender); MyMethodHandler handler = new MyMethodHandler(Method1); handler += Method2; handler(someObject); 上面的委托MyMethodHandler将调用这两个方法。现在,多播委托从何而来。我读到它们可以调用多种方法,但恐怕我对委托的基本理解不正确。


2
如何正确注销事件处理程序
在代码审查中,我偶然发现了这个(简化的)代码片段以注销事件处理程序: Fire -= new MyDelegate(OnFire); 我认为这不会取消注册事件处理程序,因为它会创建一个从未注册过的新委托。但是在搜索MSDN时,我发现了几个使用此惯用语的代码示例。 所以我开始了一个实验: internal class Program { public delegate void MyDelegate(string msg); public static event MyDelegate Fire; private static void Main(string[] args) { Fire += new MyDelegate(OnFire); Fire += new MyDelegate(OnFire); Fire("Hello 1"); Fire -= new MyDelegate(OnFire); Fire("Hello 2"); Fire -= new MyDelegate(OnFire); Fire("Hello 3"); } …
67 c#  .net  events  delegates 

3
为什么在使用Invoke方法时编译正常,而直接返回Func <int,int>却不正常?
我不了解这种情况: public delegate int test(int i); public test Success() { Func&lt;int, int&gt; f = x =&gt; x; return f.Invoke; // &lt;- code successfully compiled } public test Fail() { Func&lt;int, int&gt; f = x =&gt; x; return f; // &lt;- code doesn't compile } 为什么在使用Invoke方法时编译正常,而csharp Func&lt;int,int&gt;直接返回时却正常?
28 c#  lambda  delegates 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.