代表可以携带参数吗?

joj*_*ojo 4 c# parameters delegates

假设我有一个功能

public void SendMessage(Message message)
{
   // perform send message action
}
Run Code Online (Sandbox Code Playgroud)

我可以为这种功能创建一个委托吗?如果是这样,我在使用委托时如何传递消息?

在我的例子中,该函数由Thread使用.每当有事件发生时,我都需要向服务器发送一条消息,以保存记录.我还需要让它在后台运行,这样它就不会影响应用程序.但是,线程需要使用委托

Thread t = new Thread(new ThreadStart(SendMessage));
Run Code Online (Sandbox Code Playgroud)

我不知道如何将消息传递给代表.谢谢.

Jar*_*Par 11

当然

public delegate void DelWithSingleParameter(Message m);
Run Code Online (Sandbox Code Playgroud)

传递消息可以通过以下方式完成

DelWithSingleParameter d1 = new DelWithSingleParameter(this.SomeMethod);
d1(new Message());
Run Code Online (Sandbox Code Playgroud)

同样,@ Mehrdad在框架的较新版本中指出,您不再需要定义此类委托.而是重用现有Action<T>委托进行此类操作.

Action<Message> d1 = new Action<Message>(this.SomeMethod);
d1(new Message());
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`Action <Message>`;) (7认同)