gpt4 book ai didi

c# - 将 void 传递给泛型类

转载 作者:太空狗 更新时间:2023-10-29 22:29:32 25 4
gpt4 key购买 nike

我正在尝试创建一个表单,该表单将在处理特定任务(作为委托(delegate)传递给构造函数)时对某些内容进行动画处理。它工作正常,但我遇到的问题是,如果我要执行的特定方法的返回类型为 void,我将无法实例化泛型类的副本。

我知道这是设计使然,但我想知道是否有针对这种情况的已知解决方法。

如果它对我的所有 Windows 窗体都有帮助(为简洁起见进行了修剪):

public partial class operatingWindow<T> : Form
{
public delegate T Operation();
private Operation m_Operation;

private T m_ReturnValue;
public T ValueReturned { get { return m_ReturnValue; } }

public operatingWindow(Operation operation) { /*...*/ }
}

我这样调用它:

operatingWindow<int> processing = new operatingWindow<int>(new operatingWindow<int>.Operation(this.doStuff));
processing.ShowDialog();

// ...
private int doStuff()
{
Thread.Sleep(3000);

return 0;
}

最佳答案

不,您需要创建一个重载来执行此操作。

例如

public operatingWindow(Action action) 
{
m_Operation=() => { action(); return null; }
}

另外你不需要定义你自己的委托(delegate),你可以使用Func<T>和行动。

关于c# - 将 void 传递给泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/668316/

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