C#带参数的回调的的参数赋值怎么实现,请给出典型的案例
时间: 2024-10-12 20:08:57 浏览: 33
在C#中,通过委托(Delegate)和事件(Event)机制可以实现带参数的回调。下面是一个典型的例子:
假设我们有一个`IEventListener`接口,它定义了一个方法`OnEvent`接收一个字符串类型的参数:
```csharp
public interface IEventListener
{
void OnEvent(string eventData);
}
```
然后我们创建一个类`EventPublisher`,它有一个公开的事件`MyEvent`,这个事件就是`IEventListener.OnEvent`方法的一个实例:
```csharp
public class EventPublisher
{
public event IEventListener MyEvent;
// 发布事件时,会触发所有订阅者的方法
public void RaiseEvent(string eventData)
{
MyEvent?.Invoke(eventData);
}
}
```
用户可以在需要的地方订阅这个事件,并提供自定义的行为:
```csharp
public class EventSubscriber : IEventListener
{
public void OnEvent(string eventData)
{
Console.WriteLine($"Received event data: {eventData}");
// 这里可以对eventData做进一步处理
}
public static void Main()
{
var publisher = new EventPublisher();
var subscriber = new EventSubscriber();
// 订阅事件并指定处理函数
publisher.MyEvent += subscriber.OnEvent;
// 发布事件
publisher.RaiseEvent("This is an example event.");
}
}
```
在这个例子中,当`publisher.RaiseEvent("Some data")`被调用时,`subscriber.OnEvent`就会被回调,参数`eventData`会被传递。
阅读全文
相关推荐



















