次のブロックが間違っているのはなぜですか?なぜ 'Func <IBase>'は 'Func <TGeneric> TGeneric:IBase'がコンパイルされないうちにコンパイルされますか?
public interface IBase { }
public class ClassX : IBase
{
}
public class ClassY
{
public static ClassX FunctionReturnX() { return new ClassX(); }
}
public class ClassZ<TGeneric> where TGeneric : IBase
{
Func<IBase> funcInterface = ClassY.FunctionReturnX; //Right
Func<TGeneric> funcGeneric = ClassY.FunctionReturnX; //Wrong
}