С# Generics: Если T является возвращаемым типом, может ли он быть недействительным? Как объединить эти интерфейсы?
У меня есть следующий интерфейс, который возвращает общий параметр типа T с помощью обратного вызова...
public interface IDoWork<T>
{
T DoWork();
}
однако у меня также есть следующий интерфейс, но он не будет вызывать обратный вызов, поскольку он возвращает void.
public interface IDoWork
{
void DoWork();
}
Можно ли объединить эти два интерфейса и использовать логику времени выполнения, чтобы определить разницу? Как я могу это сделать?
Ответы
Ответ 1
К сожалению, их нельзя комбинировать.
Вы можете видеть это в рамках - почему существует отдельный Task
и Task<T>
, например.
При этом вы можете часто использовать реализации в этом типе сценария, используя IDoWork<object>
и передавая null
для значений и т.д.
Ответ 2
return type является частью сигнатуры метода, поэтому T DoWork() и void DoWork() различаются, а void не является типом и не является null
. Это указывает на то, что нет ничего в оценочном стеке при возврате из метода.