草庐IT

Delegates

全部标签

c# - 如何声明返回相同类型的 Func Delegate 的 Func Delegate?

我想编写一个方法来完成一些工作并最终返回另一个与原始方法具有相同签名的方法。这个想法是根据前一个字节值顺序处理字节流,而不用递归。通过这样调用它:MyDelegateexecuteMethod=handleFirstByte//WhatformshouldbeMyDelegate?foreach(BytemyByteinBytes){executeMethod=executeMethod(myByte);//doesstuffonbyteandreturnsthemethodtohandlethefollowingbyte}为了移交方法,我想将它们分配给Func委托(delegate)

c# - 委托(delegate)、Lambda 和 LINQ,我的天哪!

作为一名相当初级的开发人员,我遇到了一个问题,它凸显了我缺乏经验和知识上的漏洞。如果这里的序言太长,请原谅。我发现自己在一个项目中需要学习许多(对我来说)新技术,包括LINQ(为了这个项目的目的,到OBJECTS和XML)等等。到目前为止我读到的所有内容都表明,要使用LINQ,我需要完全理解以下内容(委托(delegate)、匿名方法和Lambda表达式)。好的,现在有趣的来了。我过去使用.NET事件模型时使用过委托(delegate),但大部分细节对我来说是隐藏的(感谢Microsoft!)。我知道在基本层面上,委托(delegate)实例是指向方法的指针(我知道这是一种严重的过度简

c# - 分配给委托(delegate)的通用方法

我对委托(delegate)和泛型方法有点困惑。是否可以将委托(delegate)分配给具有泛型类型参数的方法?即://Thisdoesn'tallowmetopassagenericparameterwiththedelegate.publicdelegatevoidGenericDelegate()someDelegate=GenericMethod;publicvoidGenericMethod()whereT:ISomeClass{}我正在尝试将此委托(delegate)传递给具有该方法所期望的通用接口(interface)类型的函数,函数如下:voidCheckDelegat

c# - 如何修复 'compiler error - cannot convert from method group to System.Delegate' ?

publicMainWindow(){CommandManager.AddExecutedHandler(this,ExecuteHandler);}voidExecuteHandler(objectsender,ExecutedRoutedEventArgse){}错误1​​参数2:无法从“方法组”转换为“System.Delegate” 最佳答案 我猜有多个具有不同签名的ExecuteHandler。只需将您的处理程序转换为您想要的版本:CommandManager.AddExecuteHandler(this,(Action)

c# - 使用反射在 C# 中引发事件的单元测试

我想测试设置某个属性(或更一般地说,执行某些代码)是否会在我的对象上引发某个事件。在这方面,我的问题类似于UnittestingthataneventisraisedinC#,但我需要很多这样的测试,而且我讨厌样板文件。所以我正在寻找一个更通用的解决方案,使用反射。理想情况下,我想做这样的事情:[TestMethod]publicvoidTestWidth(){MyClassmyObject=newMyClass();AssertRaisesEvent(()=>{myObject.Width=42;},myObject,"WidthChanged");}对于AssertRaisesEv

c# - 如何使用 Task.Run(Action<T>)

我正在尝试创建一个接受TcpClient连接并在客户端连接后执行任务“ConnectedAction”的方法。我在尝试创建新任务以运行委托(delegate)“ConnectedAction”时收到编译错误。Argument1:cannotconvertfrom'void'to'System.Func'我相信这个错误是因为该方法正在尝试运行“ConnectedAction”方法并将void返回给Task.Run参数。如何让任务运行“ConnectedAction”委托(delegate)?classListener{publicIPEndPointListenerEndPoint{ge

c# - 具有 OR 子句和空值的 lambda 表达式的 LINQ where 子句返回不完整的结果

问题简而言之我们在Where子句中使用了一个lambda表达式,它没有返回“预期”结果。快速总结在analysisObjectRepository对象中,有一些对象在名为Parent的属性中也包含父关系。我们正在查询此analysisObjectRepository以返回一些对象。细节下面的代码应该做的是,返回包含ID值的特定对象的根、第一个子对象(直接子对象)和孙对象。在下面的代码中,常识告诉我们,所有使3个单独的OR条件中的任何一个为真的结果都应该在结果中返回。ListanalysisObjects=analysisObjectRepository.FindAll().Where(

c# - 将通用 Action<T> 委托(delegate)添加到列表

是否可以将通用委托(delegate)操作添加到列表集合中?我需要某种用于Silverlight应用程序的简单消息传递系统。更新以下是我真正“想要”的classSomeClass{publicTData{get;set;}//andmore....}classApp{List>>_actions=newList>>();voidAdd(Action>foo){_actions.Add(foo);}}编译器:Thetypeornamespacename'T'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?

c# - Func 委托(delegate)与函数

谁能告诉我使用委托(delegate)而不是调用函数本身的优势,如下所示(或者换句话说,为什么选择选项A而不是选项B)?昨晚我在看某人的linq代码,他们有类似于选项A的东西,但它被用来返回编译的linq查询。我意识到前者现在可以传递给其他功能..只是不确定它的实用性。顺便说一句,我意识到这不会按原样编译。在发布之前取消注释其中一个函数。蒂亚classProgram{staticvoidMain(string[]args){Console.WriteLine(SayTwoWords("Hello","World"));Console.ReadKey();}//OptionAprivat

c# - 帮助理解 .NET 委托(delegate)、事件和事件处理程序

这个问题在这里已经有了答案:Whydoestryingtounderstanddelegatesfeelliketryingtounderstandthenatureoftheuniverse?(6个答案)关闭3年前。在过去的几天里,我问了几个关于委托(delegate)的问题HERE和HERE.我承认......我真的不明白委托(delegate)。我真的真的真的很想理解和掌握它们。(我可以定义它们——类型安全的函数指针——但由于我对C类型语言的经验很少,所以它并不是很有帮助。)任何人都可以推荐一些在线资源来以一种不假设的方式解释委托(delegate)吗?这是我怀疑VB实际上妨碍了