public void Foo<T>(Func<T> bar)
where T: IMyInterface
{
Func<IMyInterface> func = bar;
}
虽然我已经理解了协变性一段时间,但这个代码不应该编译通过吗?
任何bar
可以返回的值也都是IMyInterface
类型的。问题出在哪里呢?
public void Foo<T>(Func<T> bar)
where T: IMyInterface
{
Func<IMyInterface> func = bar;
}
虽然我已经理解了协变性一段时间,但这个代码不应该编译通过吗?
任何bar
可以返回的值也都是IMyInterface
类型的。问题出在哪里呢?
正确的代码如下:
public void Foo<T>(Func<T> bar)
where T: class, IMyInterface
{
Func<IMyInterface> func = bar;
}