Подтвердить что ты не робот

С# Generics: Если T является возвращаемым типом, может ли он быть недействительным? Как объединить эти интерфейсы?

У меня есть следующий интерфейс, который возвращает общий параметр типа T с помощью обратного вызова...

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

однако у меня также есть следующий интерфейс, но он не будет вызывать обратный вызов, поскольку он возвращает void.

public interface IDoWork
{
    void DoWork();
}

Можно ли объединить эти два интерфейса и использовать логику времени выполнения, чтобы определить разницу? Как я могу это сделать?

4b9b3361

Ответ 1

К сожалению, их нельзя комбинировать.

Вы можете видеть это в рамках - почему существует отдельный Task и Task<T>, например.

При этом вы можете часто использовать реализации в этом типе сценария, используя IDoWork<object> и передавая null для значений и т.д.

Ответ 2

return type является частью сигнатуры метода, поэтому T DoWork() и void DoWork() различаются, а void не является типом и не является null. Это указывает на то, что нет ничего в оценочном стеке при возврате из метода.