草庐IT

Delegates

全部标签

c# - 事件和委托(delegate)的区别及其各自的应用

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion除了语法糖之外,我看不出使用事件比使用委托(delegate)有什么优势。也许我误解了,但似乎事件只是委托(delegate)的占位符。您能向我解释一下区别以及何时使用哪个吗?有什么优点和缺点?我们的代码在很大程度上Root于事件,我想深入了解它。您什么时候对事件使用委托(delegate),反之亦然?请在生产代码中说明您对两者的真实体验。

c# - 为什么在作为普通委托(delegate)参数提供时必须转换 lambda 表达式

取方法System.Windows.Forms.Control.Invoke(Delegatemethod)为什么会出现编译时错误:stringstr="woop";Invoke(()=>this.Text=str);//Error:Cannotconvertlambdaexpressiontotype'System.Delegate'//becauseitisnotadelegatetype但这工作正常:stringstr="woop";Invoke((Action)(()=>this.Text=str));什么时候该方法需要一个普通的委托(delegate)?

c# - 为什么在作为普通委托(delegate)参数提供时必须转换 lambda 表达式

取方法System.Windows.Forms.Control.Invoke(Delegatemethod)为什么会出现编译时错误:stringstr="woop";Invoke(()=>this.Text=str);//Error:Cannotconvertlambdaexpressiontotype'System.Delegate'//becauseitisnotadelegatetype但这工作正常:stringstr="woop";Invoke((Action)(()=>this.Text=str));什么时候该方法需要一个普通的委托(delegate)?

c# - 为什么匿名方法不能赋值给var?

我有以下代码:Funccomparer=delegate(stringvalue){returnvalue!="0";};但是,以下内容无法编译:varcomparer=delegate(stringvalue){returnvalue!="0";};为什么编译器不能弄清楚它是一个Func?它接受一个字符串参数,并返回一个bool值。相反,它给了我错误:Cannotassignanonymousmethodtoanimplicitly-typedlocalvariable.我有一个猜测,那就是如果编译了var版本,如果我有以下内容,它将缺乏一致性:varcomparer=delegat

c# - 为什么匿名方法不能赋值给var?

我有以下代码:Funccomparer=delegate(stringvalue){returnvalue!="0";};但是,以下内容无法编译:varcomparer=delegate(stringvalue){returnvalue!="0";};为什么编译器不能弄清楚它是一个Func?它接受一个字符串参数,并返回一个bool值。相反,它给了我错误:Cannotassignanonymousmethodtoanimplicitly-typedlocalvariable.我有一个猜测,那就是如果编译了var版本,如果我有以下内容,它将缺乏一致性:varcomparer=delegat

c# - C# 中 Action 委托(delegate)的使用

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我正在使用C#中的ActionDelegates工作,希望更多地了解它们并思考它们可能在哪些方面有用。有人用过ActionDelegate吗?如果用过,为什么?或者您能举一些可能有用的例子吗?

c# - C# 中 Action 委托(delegate)的使用

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我正在使用C#中的ActionDelegates工作,希望更多地了解它们并思考它们可能在哪些方面有用。有人用过ActionDelegate吗?如果用过,为什么?或者您能举一些可能有用的例子吗?

c# - C#取消订阅匿名方法

是否可以取消订阅事件的匿名方法?如果我订阅这样的事件:voidMyMethod(){Console.WriteLine("Ididit!");}MyEvent+=MyMethod;我可以这样取消订阅:MyEvent-=MyMethod;但是如果我使用匿名方式订阅:MyEvent+=delegate(){Console.WriteLine("Ididit!");};是否可以取消订阅此匿名方法?如果是,怎么办? 最佳答案 ActionmyDelegate=delegate(){Console.WriteLine("Ididit!");}

c# - C#取消订阅匿名方法

是否可以取消订阅事件的匿名方法?如果我订阅这样的事件:voidMyMethod(){Console.WriteLine("Ididit!");}MyEvent+=MyMethod;我可以这样取消订阅:MyEvent-=MyMethod;但是如果我使用匿名方式订阅:MyEvent+=delegate(){Console.WriteLine("Ididit!");};是否可以取消订阅此匿名方法?如果是,怎么办? 最佳答案 ActionmyDelegate=delegate(){Console.WriteLine("Ididit!");}

c# - 为什么要使用 Expression<Func<T>> 而不是 Func<T>?

我了解lambda和Func和Action委托(delegate)们。但是表达式难倒我。在什么情况下你会使用Expression>而不是普通的旧Func? 最佳答案 当您想将lambda表达式视为表达式树并查看它们的内部而不是执行它们时。例如,LINQtoSQL获取表达式并将其转换为等效的SQL语句并将其提交给服务器(而不是执行lambda)。从概念上讲,Expression>与Func完全不同.Func表示delegate这几乎是一个指向方法和Expression>的指针表示lambda表达式的树数据结构。此树结构描述了lambd