gpt4 book ai didi

具有重载的 C# 自定义事件

转载 作者:行者123 更新时间:2023-11-30 15:49:20 25 4
gpt4 key购买 nike

所以我有一个这样的自定义事件:

    Work w = new worker()
w.newStatus += new worker.status(addStatus);
w.doWork();

void addStatus(string status)
{
MessageBox.Show(status);
}

还有这个:

    public event status newStatus;
public delegate void status(string status);

public void doWork()
{
newStatus("Work Done");
}

如果我要使“addStatus”成为一个重载,我需要做些什么来传递重载参数而不创建第二个委托(delegate)/事件?

最佳答案

使您的status 委托(delegate)像这样通用:

public event Status<String> NewStatus;
public event Status<Int32> OtherStatus;
public delegate void Status<T>(T status);

public void DoWork()
{
NewStatus("Work Done");
OtherStatus(42);
}

然后您可以创建使用相同委托(delegate)的强类型事件。

编辑:这是一个完整的示例,显示了实际操作:

using System;

class Example
{
static void Main()
{
Work w = new Work();
w.NewStatus += addStatus;
w.OtherStatus += addStatus;
w.DoWork();
}
static void addStatus(String status)
{
Console.WriteLine(status);
}
static void addStatus(Int32 status)
{
Console.WriteLine(status);
}
}

class Work
{
public event Status<String> NewStatus;
public event Status<Int32> OtherStatus;
public delegate void Status<T>(T status);

public void DoWork()
{
NewStatus("Work Done");
OtherStatus(42);
}
}

关于具有重载的 C# 自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com