Questions tagged «delegates»

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

7
为什么不能将匿名方法分配给var?
我有以下代码: Func<string, bool> comparer = delegate(string value) { return value != "0"; }; 但是,以下内容无法编译: var comparer = delegate(string value) { return value != "0"; }; 为何编译器无法找出它是Func<string, bool>?它采用一个字符串参数,并返回一个布尔值。相反,它给了我错误: 无法将匿名方法分配给隐式类型的局部变量。 我有一个猜测,那就是如果var版本已编译,如果我具有以下内容,它将缺乏一致性: var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; }; 由于Func <>最多只允许使用4个参数(在.NET 3.5中,这是我正在使用的参数),因此上述方法没有意义。也许有人可以澄清这个问题。谢谢。




9
C#中Action委托的使用
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 我曾与C#中的“行动代表”一起工作,希望对他们有更多的了解,并思考他们可能在什么地方有用。 有人使用过动作代表吗,为什么?还是可以举一些可能有用的例子?
132 c#  lambda  delegates  action 



13
将委托包装在IEqualityComparer中
多个Linq.Enumerable函数采用IEqualityComparer<T>。是否有一个方便的包装器类适合a delegate(T,T)=>bool实现IEqualityComparer<T>?编写一个代码很容易(如果您忽略定义正确的哈希码的问题),但是我想知道是否有一个现成的解决方案。 具体来说,我想对Dictionarys 进行设置操作,仅使用Key定义成员资格(同时根据不同规则保留值)。
127 .net  linq  delegates 

3
ReSharper / C#中的“代理减法具有不可预测的结果”?
使用myDelegate -= eventHandlerReSharper(版本6)问题时: 委托减法具有不可预测的结果 JetBrains在此解释了背后的原因。该解释是合理的,并且在阅读之后,我怀疑我对-on委托的所有使用。 那么如何, 我可以编写一个非自动事件而不会使ReSharper脾气暴躁吗? 或者,是否有更好和/或“正确”的方法来实现这一目标? 或者,我可以忽略ReSharper吗? 这是简化的代码: public delegate void MyHandler (object sender); MyHandler _myEvent; public event MyHandler MyEvent { add { _myEvent += value; DoSomethingElse(); } remove { _myEvent -= value; // <-- ReSharper warning here } }

8
当作为纯Delegate参数提供时,为什么必须强制转换lambda表达式
采取方法System.Windows.Forms.Control.Invoke(Delegate方法) 为什么会给出编译时错误: string str = "woop"; Invoke(() => this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type 但这工作正常: string str = "woop"; Invoke((Action)(() => this.Text = str)); 该方法何时需要普通代表?
124 c#  c#-3.0  delegates  lambda 


8
我在哪里使用代表?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 在现实世界中,有哪些地方需要代表?我很好奇这种方法是最佳解决方案的情况或模式。无需代码。

10
事件和委托之间的区别及其各自的应用[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 除了语法上的糖以外,我没有看到使用事件优于委托的优势。也许我误会了,但似乎该事件只是代表的占位符。 您能给我解释一下区别和何时使用吗?优点和缺点是什么?我们的代码深深植根于事件,我想深入了解它。 什么时候在事件上使用委托,反之亦然?请在生产代码中说明您在这两个方面的实际经验。
107 c#  events  delegates 

7
C#事件是否同步?
这个问题有两个部分: 是否提高事件阻塞线程,或者它异步启动事件处理器的执行和线程便继续在同一时间? 是个别事件处理器同步运行接二连三(订阅事件),或者是他们还不能保证别人不会在同一时间运行的异步运行?
104 c#  .net  events  delegates 

4
编译器歧义调用错误-具有Func <>或Action的匿名方法和方法组
我有一种情况,我想使用方法组语法而不是匿名方法(或lambda语法)来调用函数。 该函数有两个重载,一个接受一个Action,其他的需要Func&lt;string&gt;。 我可以使用匿名方法(或lambda语法)愉快地调用这两个重载,但是如果我使用方法组语法,则会出现歧义调用的编译器错误。我可以通过显式强制转换为Action或来变通Func&lt;string&gt;,但是认为这没有必要。 谁能解释为什么需要显式强制转换。 下面的代码示例。 class Program { static void Main(string[] args) { ClassWithSimpleMethods classWithSimpleMethods = new ClassWithSimpleMethods(); ClassWithDelegateMethods classWithDelegateMethods = new ClassWithDelegateMethods(); // These both compile (lambda syntax) classWithDelegateMethods.Method(() =&gt; classWithSimpleMethods.GetString()); classWithDelegateMethods.Method(() =&gt; classWithSimpleMethods.DoNothing()); // These also compile (method group with explicit cast) classWithDelegateMethods.Method((Func&lt;string&gt;)classWithSimpleMethods.GetString); classWithDelegateMethods.Method((Action)classWithSimpleMethods.DoNothing); // These both error …
102 c#  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.