草庐IT

c# - 在类中打包事件参数,为什么?

大多数.NET股票事件都有这个签名:delegatevoidSomethingSomething(SomethingEventArgse);eventSomethingSomethingOnSomethingSomething;和classSomethingEventArgs{publicstringName;publicintIndex;publicdoubleGroar;}为什么这比(显然是,否则任何人都会选择这样做)更好:delegatevoidSomethingSomething(stringName,intIndex,doubleGroar);eventSomethingSo

c# - 为什么事件处理程序的返回类型总是 void?

嘿嘿,我想知道为什么像这样的事件的返回类型privatevoidbutton1_Click(objectsender,EventArgse)总是无效的?它还能返回任何其他值吗? 最佳答案 事件处理程序签名,即返回类型以及它采用的参数的数量和类型,由用于定义事件的委托(delegate)的签名确定。所以你例子中Button的Click事件不支持任何返回值。通常您不希望从事件处理程序返回一个值作为函数返回值,因为一个事件可以有多个订阅者,并且每个订阅者都会独立于其他处理程序返回一个返回值,并且需要特殊的事件触发代码来决定如何处理所有返回

c# - 为什么事件处理程序的返回类型总是 void?

嘿嘿,我想知道为什么像这样的事件的返回类型privatevoidbutton1_Click(objectsender,EventArgse)总是无效的?它还能返回任何其他值吗? 最佳答案 事件处理程序签名,即返回类型以及它采用的参数的数量和类型,由用于定义事件的委托(delegate)的签名确定。所以你例子中Button的Click事件不支持任何返回值。通常您不希望从事件处理程序返回一个值作为函数返回值,因为一个事件可以有多个订阅者,并且每个订阅者都会独立于其他处理程序返回一个返回值,并且需要特殊的事件触发代码来决定如何处理所有返回

c# - 如何在 C# 中向 UserControl 添加事件?

我有一个包含3个标签的UserControl。我想为它添加一个事件,当其中一个标签的文本发生变化时发生。我正在使用VisualStudio2010 最佳答案 首先,您需要在您的类中声明该事件(连同您的方法和构造函数):publiceventEventHandlerLabelsTextChanged;然后您需要创建一个方法来处理各个标签的TextChanged事件。privatevoidHandleLabelTextChanged(objectsender,EventArgse){//we'llexplainthisinaminute

c# - 如何在 C# 中向 UserControl 添加事件?

我有一个包含3个标签的UserControl。我想为它添加一个事件,当其中一个标签的文本发生变化时发生。我正在使用VisualStudio2010 最佳答案 首先,您需要在您的类中声明该事件(连同您的方法和构造函数):publiceventEventHandlerLabelsTextChanged;然后您需要创建一个方法来处理各个标签的TextChanged事件。privatevoidHandleLabelTextChanged(objectsender,EventArgse){//we'llexplainthisinaminute

c# - 事件订阅者是否按订阅顺序调用?

假设事件订阅者按订阅顺序调用是否安全?示例:voidOne(objectsender,EventArgse){}voidTwo(objectsender,EventArgse){}eventEventHandlerfoo;foo+=One;foo+=Two;当事件被触发时,One()是否总是在Two()之前被调用?编辑:你当然不应该依赖它,我只是在想。这个想法是,多播委托(delegate)类似于COMMAND模式。所以我只是想知道。通常,您会使用一个集合来保持命令的顺序,这样您就可以执行撤消/重做/任何操作。 最佳答案 鉴于该实现

c# - 事件订阅者是否按订阅顺序调用?

假设事件订阅者按订阅顺序调用是否安全?示例:voidOne(objectsender,EventArgse){}voidTwo(objectsender,EventArgse){}eventEventHandlerfoo;foo+=One;foo+=Two;当事件被触发时,One()是否总是在Two()之前被调用?编辑:你当然不应该依赖它,我只是在想。这个想法是,多播委托(delegate)类似于COMMAND模式。所以我只是想知道。通常,您会使用一个集合来保持命令的顺序,这样您就可以执行撤消/重做/任何操作。 最佳答案 鉴于该实现

c# - 在面向 .NET 4+ 的库中公开通知时,IObservable 是否应该优先于事件

我有一个.NET库,作为对象模型的一部分,它会发出某些事件的通知。在我看来的主要优点事件对于初学者来说是平易近人的(并且在某些消费环境中很简单),主要的负面影响是它们notcomposable因此立即被迫进入Observable.FromEvent*如果您想在不编写代码丛林的情况下做任何有趣的事情。正在解决的问题的性质是,事件流量不会特别频繁或大量(绝对不是尖叫RX),但绝对不需要支持4.0之前的.NET版本[因此我可以使用内置IObservable接口(interface)在System.Reactive不强制对消费者产生任何重大依赖]。我对一些一般准则感兴趣,一些特定的具体原因更喜

c# - 在面向 .NET 4+ 的库中公开通知时,IObservable 是否应该优先于事件

我有一个.NET库,作为对象模型的一部分,它会发出某些事件的通知。在我看来的主要优点事件对于初学者来说是平易近人的(并且在某些消费环境中很简单),主要的负面影响是它们notcomposable因此立即被迫进入Observable.FromEvent*如果您想在不编写代码丛林的情况下做任何有趣的事情。正在解决的问题的性质是,事件流量不会特别频繁或大量(绝对不是尖叫RX),但绝对不需要支持4.0之前的.NET版本[因此我可以使用内置IObservable接口(interface)在System.Reactive不强制对消费者产生任何重大依赖]。我对一些一般准则感兴趣,一些特定的具体原因更喜

C# 删除事件处理程序

我已经这样做了一段时间,但我没有注意到每次删除事件处理程序时我都在使用new。我应该创建一个新对象吗?基本上1和2之间有区别吗?ethernetdevice.PcapOnPacketArrival-=newSharpPcap.PacketArrivalEvent(ArrivalResponseHandler);ethernetdevice.PcapOnPacketArrival-=ArrivalResponseHandler;编辑:好的,这是重复的。对于那个很抱歉。答案已发布here.具有相同目标、方法和调用列表的相同类型的两个委托(delegate)被认为是相等的。