C#generics:如果T是返回类型,它也可以是无效的吗? 如何将这些接口组合在一起?
我有以下接口,使用回调返回类型T的generics参数…
public interface IDoWork { T DoWork(); }
但是我也有以下接口,但它不会调用回调,因为它返回void。
public interface IDoWork { void DoWork(); }
我可以组合这两个接口并使用运行时逻辑来确定差异吗? 我怎样才能做到这一点?
不幸的是,他们不能合并。
您可以在框架中看到这一点 – 这就是为什么有一个单独的Task
和Task
类,例如。
话虽这么说,您通常可以通过使用IDoWork
并为值传递null
等来共享此类场景中的实现。
return类型是方法签名的一部分,因此T DoWork()和void DoWork()是不同的,void不是一个类型,它不是null
。 这表明从方法返回时评估堆栈中没有任何内容。