23

コールバックを使用してタイプTのジェネリックパラメーターを返す次のインターフェイスがあります...

public interface IDoWork<T>
{
    T DoWork();
}

ただし、次のインターフェイスもありますが、voidを返すため、コールバックは呼び出されません。

public interface IDoWork
{
    void DoWork();
}

これらの2つのインターフェイスを組み合わせて、ランタイムロジックを使用して違いを判断できますか?どうやってやるの?

4

2 に答える 2

21

残念ながら、それらを組み合わせることはできません。

これはフレームワークで確認できます。たとえば、別Taskのクラスがあるのはそのためです。Task<T>

そうは言っても、このタイプのシナリオでは、値を使用IDoWork<object>して渡すなどして、実装を共有できることがよくあります。null

于 2012-05-17T22:47:53.177 に答える
2

戻り値の型はメソッド シグネチャの一部であるため、T DoWork() と void DoWork() は異なり、void は型ではなく、null. メソッドから戻ったときに評価スタックに何もないことを示します。

于 2012-05-17T22:59:38.780 に答える