C# 泛型:如果 T 是返回类型,它也可以为 void 吗?如何将这些接口组合在一起
本文关键字:在一起 组合 接口 void 如果 泛型 返回类型 也可以 | 更新日期: 2023-09-27 18:34:28
我有以下接口,它使用回调返回类型 T 的泛型参数...
public interface IDoWork<T>
{
T DoWork();
}
但是我也有以下接口,但它不会调用回调,因为它返回 void。
public interface IDoWork
{
void DoWork();
}
是否可以组合这两个接口并使用运行时逻辑来确定差异? 我该怎么做?
不幸的是,它们不能组合。
你可以在框架中看到这一点 - 这就是为什么有一个单独的Task
和Task<T>
类,例如。
话虽如此,您通常可以通过使用 IDoWork<object>
和传递值等null
来共享此类方案中的实现。
返回类型是方法签名的一部分,所以 T DoWork(( 和 void DoWork(( 是不同的,void 不是一个类型,也不是一个null
。这表明从方法返回时评估堆栈中没有任何内容。