草庐IT

delegate_interceptor

全部标签

c# - 匿名方法和委托(delegate)

我试图理解为什么BeginInvoke方法不接受匿名方法。voidbgWorker_ProgressChanged(objectsender,ProgressChangedEventArgse){if(InvokeRequired){//Won'tcompileBeginInvoke(delegate(objectsender,ProgressChangedEventArgse){bgWorker_ProgressChanged(sender,e);});}progressBar1.Increment(e.ProgressPercentage);}它告诉我“无法从‘匿名方法’转换为‘S

c# - 应该在引发事件的类内部还是外部声明委托(delegate)?

我见过各种事件处理的例子。这是一个:EventSample.有时我看到委托(delegate)在将引发事件的类外部声明(如上面的链接所示),有时在内部(我认为它应该被声明)。对我来说,在将引发事件的类中声明事件更有意义。原因是该类将声明的事件实际上只是辅助方法等的一些糖衣,它们实际上是在对委托(delegate)进行添加、减去和调用等操作。有什么最佳实践吗?是否有时您想在外部声明委托(delegate),而有时又想在内部声明委托(delegate)?如果是这样,应该如何决定要做什么? 最佳答案 通常,现在您会创建自己的派生自Even

c# - 无法分配给委托(delegate)具有不太具体的参数类型的匿名方法

我能够分配一个方法M来委托(delegate)对象d具有不太具体的参数类型,但是当我想分配一个具有相同签名的匿名方法时作为M到d的方法,我得到一个错误。这是为什么?classderivedEventArgs:EventArgs{}delegatevoidnewDelegate(objecto,derivedEventArgse);staticvoidMain(string[]args){newDelegated=M;//okd=(objecto,EventArgse)=>{};//error}publicstaticvoidM(objecto,EventArgse){}

c# - 委托(delegate) : Method name expected error

我正在尝试让以下简单的委托(delegate)示例正常工作。根据我从中获取的一本书应该没问题,但我得到了一个Methodnameexpected错误。namespaceTestConsoleApp{classProgram{privatedelegatestringD();staticvoidMain(string[]args){intx=1;Dcode=newD(x.ToString());}}}有什么帮助吗? 最佳答案 删除():Dcode=newD(x.ToString);您想指定方法,而不是执行。

c# - 了解 Lambda 表达式和委托(delegate)

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我已经尝试解决这个问题很长时间了(阅读在线博客和文章),但到目前为止没有成功。什么是委托(delegate)?什么是Lambda表达式?两者的优缺点?何时使用其中一个或另一个的最佳实践?提前致谢。

c# - 为什么委托(delegate)逆变对值类型不起作用?

此代码段未在LINQPad中编译。voidMain(){(new[]{0,1,2,3}).Where(IsNull).Dump();}staticboolIsNull(objectarg){returnarg==null;}编译器的错误信息是:Nooverloadfor'UserQuery.IsNull(object)'matchesdelegate'System.Func'它适用于字符串数组,但不适用于int[]。这显然与拳击有关,但我想知道详细信息。 最佳答案 给出的答案(值类型不存在差异)是正确的。当可变类型参数之一是值类型时

c# - 委托(delegate)为属性 : Bad Idea?

考虑以下控件(为简洁起见被截断):publicpartialclassConfigurationManagerControl:UserControl{publicFuncCanEdit{get;set;}publicFuncCanDelete{get;set;}publicDictionarySettings{get{returnInnerSettings;}set{InnerSettings=value;BindData();}}privateDictionaryInnerSettings;privatevoidOnListIndexChanged(objectsender,Even

c# - 使用委托(delegate)和 Lambda 的奇怪行为

作为在我正在开发的库中引入惰性格式化评估的一种方式,我定义了委托(delegate)publicdelegatestringMessageFormatterDelegate(stringmessage,paramsobject[]arguments);publicdelegatestringMessageFormatterCallback(MessageFormatterDelegateformatterDelegate);和下面类的内容publicstaticclassTestClass{publicstaticstringEvaluate(MessageFormatterCallb

c# - 委托(delegate)会导致内存泄漏吗? GC.TotalMemory(true) 似乎表明如此

代码usingSystem;internalstaticclassTest{privatestaticvoidMain(){try{Console.WriteLine("{0,10}:Startpoint",GC.GetTotalMemory(true));ActionsimpleDelegate=SimpleDelegate;Console.WriteLine("{0,10}:Simpledelegatecreated",GC.GetTotalMemory(true));ActionsimpleCombinedDelegate=simpleDelegate+simpleDelegat

c# - 在没有外部委托(delegate)定义的情况下定义 C# 事件

出于好奇:是否可以在C#中定义事件而不预先定义委托(delegate)类型?类似于publicevent(delegatevoid(int))EventName 最佳答案 内置通用委托(delegate)类型,Action和Func,其中Action返回void。每个泛型类型参数都是要传递给委托(delegate)的参数的类型。例如publiceventActionEventName;此外,还有一个通用的EventHandler遵循传递对象发送者并具有EventArgs类型的约定。 关于