3

我有一个事件,我将我的处理程序与它相关联。当我编写处理程序方法时,我如何知道函数采用哪些参数?

例子:

    // Add an event handler to be called whenever there is new color frame data
            this.sensor.ColorFrameReady += this.SensorColorFrameReady;
            this.sensor.AllFramesReady += this.AllFramesReady;

    //handler
     private void AllFramesReady(object sender, AllFramesReadyEventArgs allFramesReadyEventArgs)
    {


        throw new NotImplementedException();
    }

我怎么知道我的函数的参数是object sender所有帧准备好的参数?

4

4 回答 4

6

您查找该事件的文档。它将指定定义该事件的委托。然后,您可以查找该委托的文档,以查看与委托匹配的函数签名必须是什么。

或者您可以依靠 Visual Studio 来告诉您而不是查找它,这是大多数人所做的。(将鼠标悬停在事件上会告诉您委托必须是什么,或者SomeEvent +=在键盘上键入会提示您选择创建具有正确签名的事件处理程序的新存根。)

请注意,参数的名称是无关紧要的(使用任何你想要的),只有类型很重要。

于 2013-07-03T20:41:56.557 回答
4

在 Visual Studio 中手动执行此操作的方法是键入this.sensor.ColorFrameReady +=,然后按两次 Tab 以查看默认实现是什么。对您想要查看其签名的任何其他事件/代表进行类似的操作。

这样做不需要您拥有事件和委托的源代码(您可能没有)。

在我多年的 C# 编码中,我从未真正找到更好的方法来做到这一点。(我实际上并没有寻找解决方案,但没有任何明显的解决方案。)

于 2013-07-03T20:45:10.887 回答
1

在 Visual Studio 中:右键单击事件名称 -> 转到定义。这将带您参加活动。右键单击处理程序类名称 -> 转到定义。这将带您到委托的定义,它为您提供方法签名。

这可能稍微取决于您的 Visual Studio 设置。

于 2013-07-03T20:43:18.807 回答
1

事件具有委托类型。委托类型定义处理程序方法的签名。因此,查找事件委托类型,您将找到所需的签名。

于 2013-07-03T20:43:21.180 回答