对我来说,它看起来像编译器错误或一些奇怪的行为.编译器无法确定泛型类中的泛型参数类型
码
public interface IHamster
{
int Some { get; set; }
}
public abstract class BaseHamster : IHamster
{
public int Some { get; set; }
}
public class DerivedHamster : BaseHamster
{
}
class ApplyHitHamster<T> where T : IHamster // <-- same constraint
{
void Zu()
{
BaseHamster hamster = null;
var derived = new DerivedHamster();
IHamster i = derived;
var s = new TakeDamageHamster<T>(i); // <<<< Compilation Error on any variables(hamster,derived,i) WHY?????????
var s2 = new TakeDamageHamster<IHamster>(i); …Run Code Online (Sandbox Code Playgroud)