泛型方法重写 c# 存在显式转换(是否缺少强制转换?

本文关键字:转换 是否 重写 存在 显式转换 泛型方法 | 更新日期: 2023-09-27 18:33:52

public class Base
{
}
public class Rabbit : Base
{
}
public abstract class OO
{
    public abstract ICollection<T> Test<T>() where T : Base;
}
public class LOL : OO
{
    public override ICollection<T> Test<T>()
    {
        return new Collection<Rabbit>();
    }
}

这种类的形成给出了以下错误。

"System.Collections.ObjectModel.Collection"到"System.Collections.Generic.ICollection"。存在显式转换(您是否缺少强制转换?

知道如何解决这个问题吗?

泛型方法重写 c# 存在显式转换(是否缺少强制转换?

试试这个:

public class LOL : OO
    {
        public override ICollection<T> Test<T>()
        {
            return (ICollection<T>) new Collection<Rabbit>();
        }
    }
public class Base
{
}
public class Rabbit : Base
{
}
public abstract class OO
{
    public abstract ICollection<T> Test<T>() where T : Base;
}
public class LOL : OO
{
    public override ICollection<T> Test<T>()
    {
        return new Collection<T>();
    }
}

public class Base
{
}
public class Rabbit : Base
{
}
public abstract class OO
{
    public abstract ICollection<T> Test<T>() where T : Base;
}
public class LOL : OO
{
    public override ICollection<T> Test<T>()
    {
        return new Collection<Rabbit>() as ICollection<T>;
    }
}
相关文章: