草庐IT

delegate_interceptor

全部标签

c# - 最佳实践 : When should I use a delegate in . NET?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicates:DelegateUsage:BusinessApplicationsWheredoIusedelegates?你好,我是.NET中委托(delegate)概念的新手-我还没有真正使用过它们,我认为它们可能有充分的理由-我应该什么时候使用委托(delegate)?非常欢迎示例。

c# - 即使签名匹配,也无法将一种类型的委托(delegate)分配给另一种

我病态的好奇心让我想知道为什么以下失败://declaredsomewherepublicdelegateintBinaryOperation(inta,intb);//...inamethodbodyFuncaddThem=(x,y)=>x+y;BinaryOperationb1=addThem;//doesn'tcompile,andcastingdoesn'tcompileBinaryOperationb2=(x,y)=>x+y;//compiles! 最佳答案 C#对“结构”类型的支持非常有限。特别是,您不能简单地从一种委托

c# - 委托(delegate)方法与一般方法

我想知道使用委托(delegate)方法和使用一般方法[无委托(delegate)]之间的区别。例如:与委托(delegate):delegatevoidDelMethod(stringstr);staticvoidMethod(stringstr){Debug.WriteLine(str);}用法:DelMethoddm=newDelMethod(Method);dm(string);并且没有委托(delegate):staticvoidMethod(stringstr){Debug.WriteLine(str);}用法:Method(string)这两个有什么区别??没有委托(de

c# - 复制委托(delegate)

我刚刚在events上阅读了一页在MSDN上,我发现了一段令我困惑的示例代码。有问题的代码是这样的://Makeatemporarycopyoftheeventtoavoidpossibilityof//araceconditionifthelastsubscriberunsubscribes//immediatelyafterthenullcheckandbeforetheeventisraised.EventHandlerhandler=RaiseCustomEvent;我理解代码的意图,但我看不出那条特定的行是如何复制任何东西的。它所做的只是复制引用;它实际上并没有制作委托(de

c# - 委托(delegate)可以有可选参数吗?

在我尝试添加boolNetworkAvailable=true部分之前,我的以下代码运行良好。现在我在下面的第4行得到了一个Methodnameexpected编译时异常。voidNetworkStatus_AvailabilityChanged(objectsender,NetworkStatusChangedArgse){varnetworkAvailable=e.IsAvailable;SetUpdateHUDConnectedModed=newSetUpdateHUDConnectedMode(UpdateHUDConnectedMode(networkAvailable));

c# - 可以在此通用代码中避免使用 Delegate.DynamicInvoke 吗?

这个问题部分是关于委托(delegate)的,部分是关于泛型的。给定简化代码:internalsealedclassTypeDispatchProcessor{privatereadonlyDictionary_actionByType=newDictionary();publicvoidRegisterProcedure(Actionaction){_actionByType[typeof(T)]=action;}publicvoidProcessItem(objectitem){Delegateaction;if(_actionByType.TryGetValue(item.Get

c# - lambda 函数是否比委托(delegate)/匿名函数更快?

我假设lambda函数、delegates和anonymousfunctions具有相同的主体将具有相同的“速度”,但是,运行以下简单程序:staticvoidMain(string[]args){Listitems=newList();Randomrandom=newRandom();for(inti=0;iresult;Func@delegate=delegate(inti){returnilambda=i=>ii我得到:Delegate:4.2948msLambda:0.0019msAnonymous:0.0034ms虽然可以忽略不计,但为什么这三种-显然相同-方法以不同的速度运

c# - 使用反射创建通用委托(delegate)

我有以下代码:classProgram{staticvoidMain(string[]args){newProgram().Run();}publicvoidRun(){//worksFunc>static_delegate=newFunc>(SomeMethod);MethodInfomi=this.GetType().GetMethod("SomeMethod").MakeGenericMethod(newType[]{typeof(String)});//throwsArgumentException:ErrorbindingtotargetmethodFunc>reflecti

c# - 使用 Func<>(或 Action<>)或创建自己的委托(delegate)?

哪个更好,比如说,方法中的参数类型(与LINQ无关)。显然Func更好,因为它更简单,更具描述性,如果每个人都在使用它,一切都会变得兼容(好)。但是我注意到Microsoft在某些库中使用了自己的委托(delegate),例如事件处理程序。那么,它们各自的优点和缺点是什么?我应该什么时候使用它?编辑:显然Func仅在3.5中可用,因此这可能是我看到非Func委托(delegate)的主要原因。还有其他不使用Func的原因吗?(例如:this来自.NET4)同样的问题也适用于Action 最佳答案 Func在非常清楚它们的用途并且输入

C# Native Interop - 为什么大多数库使用 LoadLibrary 和委托(delegate)而不是 SetDllDirectory 和简单的 DllImport

有一个greatansweronSO关于如何在运行时为DllImport设置搜索目录。使用两行代码即可正常工作。但是,许多开源项目改为使用LoadLibrary函数。有“谣言”说通过委托(delegate)调用native方法速度较慢。我称它们为“谣言”,因为我只在两个地方看到过这种情况,而且无论如何这都是微观优化。最有意思的地方是这篇博文:http://ybeernet.blogspot.com/2011/03/techniques-of-calling-unmanaged-code.html在那里,作者测量了不同技术的性能:C#(信息性)4318毫秒PInvoke-抑制安全5415