草庐IT

Delegates

全部标签

c# - 从事件中返回一个值——这有什么好的做法吗?

我正在做一个使用异步TCP套接字的小型多线程应用程序,但我会直截了当:我正在使用自定义事件从表单中读取一个值,该事件使用的委托(delegate)返回一个完成时的字符串。我的问题是:这是正确的吗?可以从事件中返回值吗?还是有更好的方法来做到这一点?(比如使用一个简单的表单委托(delegate)来读取值) 最佳答案 从事件中返回值通常很尴尬。在实践中,我发现在传递给事件的一组自定义EventArgs上包含一个可写属性要容易得多,然后在事件触发后进行检查——类似于WinFormsFormClosing事件的Cancel属性。

c# - 删除事件处理程序

这是:Button.Click-=newEventHandler(Button_Click);与此相同:Button.Click-=Button_Click;我问是因为在我看来前者正在删除对方法的新引用,而后者正在删除方法本身。但话又说回来,也许新的EventHandler部分隐含在+=或-=重载中,以防程序员没有像那样显式分配它?万一不一样呢Button.Click-=newEventHandler(Button_Click);对比Button.Click-=Button_Click;谢谢。 最佳答案 是一样的。第二个只是第一个的

c# - 删除事件处理程序

这是:Button.Click-=newEventHandler(Button_Click);与此相同:Button.Click-=Button_Click;我问是因为在我看来前者正在删除对方法的新引用,而后者正在删除方法本身。但话又说回来,也许新的EventHandler部分隐含在+=或-=重载中,以防程序员没有像那样显式分配它?万一不一样呢Button.Click-=newEventHandler(Button_Click);对比Button.Click-=Button_Click;谢谢。 最佳答案 是一样的。第二个只是第一个的

c# - 我可以在 Action 或 Func 委托(delegate)中使用参数吗?

当我尝试在Action委托(delegate)中使用参数时...privateActionWriteToLogCallBack;我收到了这个设计时错误:Invalidtoken'params'inclass,struct,orinterfacememberdeclaration任何帮助! 最佳答案 这个解决方法怎么样?privateActionwriteToLogCallBack;publicvoidWriteToLogCallBack(strings,paramsobject[]args){if(writeToLogCallBac

c# - 我可以在 Action 或 Func 委托(delegate)中使用参数吗?

当我尝试在Action委托(delegate)中使用参数时...privateActionWriteToLogCallBack;我收到了这个设计时错误:Invalidtoken'params'inclass,struct,orinterfacememberdeclaration任何帮助! 最佳答案 这个解决方法怎么样?privateActionwriteToLogCallBack;publicvoidWriteToLogCallBack(strings,paramsobject[]args){if(writeToLogCallBac

C# - 将 List<T>.Find() 与自定义对象一起使用

我正在尝试使用List使用我的自定义类,并能够使用类似Contains()的方法,Find()等,在列表中。我以为我只需要重载运算符==但显然,一种方法是将委托(delegate)方法与Find()一起使用...注意:现在,我已经重载了Equals()获取Contains()的方法工作方法,但我仍然无法获得Find()功能发挥作用。让这两者发挥作用的最佳方式是什么?我在Linux上使用带有单声道的最新C#/.NET框架版本。编辑:这是我的代码usingSystem;namespaceGuerreDesClans{publicclassReponse:IEquatable{publicR

C# - 将 List<T>.Find() 与自定义对象一起使用

我正在尝试使用List使用我的自定义类,并能够使用类似Contains()的方法,Find()等,在列表中。我以为我只需要重载运算符==但显然,一种方法是将委托(delegate)方法与Find()一起使用...注意:现在,我已经重载了Equals()获取Contains()的方法工作方法,但我仍然无法获得Find()功能发挥作用。让这两者发挥作用的最佳方式是什么?我在Linux上使用带有单声道的最新C#/.NET框架版本。编辑:这是我的代码usingSystem;namespaceGuerreDesClans{publicclassReponse:IEquatable{publicR

c# - C# 中的标准委托(delegate)

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。C#中预定义了一些Delegates我知道这些:EventHandler//DefaulteventcallbacksEventHandler//Defaulteventcallbackswithcustomparameter(inheritingfromEventArgs)Action//FunctionwithoutreturnvalueandwithoutparameterAction//

c# - C# 中的标准委托(delegate)

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。C#中预定义了一些Delegates我知道这些:EventHandler//DefaulteventcallbacksEventHandler//Defaulteventcallbackswithcustomparameter(inheritingfromEventArgs)Action//FunctionwithoutreturnvalueandwithoutparameterAction//

c# - 无法从 'method group' 转换为 'System.Action<object>' 错误

我创建了以下函数:publicvoidDelegatedCall(ActiondelegatedMethod)并定义了如下方法publicvoidfoo1(Stringstr){}但是,当我尝试调用DelegateCall时与foo1:DelegatedCall(foo1);...我收到以下编译器错误:Argument1:cannotconvertfrom'methodgroup'to'System.Action'此错误的原因是什么,我该如何更正它?不幸的是,类型转换foo1至Action不是一个选项。 最佳答案 Delegated