C# 为什么在实现接口时没有对返回类型进行隐式转换?

C# 为什么在实现接口时没有对返回类型进行隐式转换?,c#,C#,C编译器不允许以下操作。它说Cool对ICool的Jello方法的实现不会返回IOObject。但对象是一个对象。为什么不支持这一点 interface ICool { IObject Jello(); } interface IObject { } class Cool : ICool { public Object Jello() { return new Object(); } } class Object : IObject { } 以下是不支持返回类型协方差

C编译器不允许以下操作。它说Cool对ICool的Jello方法的实现不会返回IOObject。但对象是一个对象。为什么不支持这一点

interface ICool
{
    IObject Jello();
}

interface IObject
{

}

class Cool : ICool
{
    public Object Jello() { return new Object(); }
}

class Object : IObject
{

}

以下是不支持返回类型协方差的C的解决方法,请参见:


在这里很好用。不要将其命名为Object,因为该名称已被使用,可能是问题的原因:您使用了错误的Object类。我道歉。我发布了一个经过编辑的版本。这是正确的版本。酷返回对象。只是发布了不起作用的代码!是的,这确实是一个复制品。感谢您指出正确的答案。如果您认为这是其他地方没有的信息,您应该将其添加到文章中,这是的副本,以便将有价值的答案组合在一起。
using System.Text;
using System.Threading.Tasks;

namespace CsharpFun
{
    class Program
    {
        static void Main(string[] args)
        {
            Object obj = (Object) new Cool().Jello();
        }
    }

    interface ICool<T> where T : IObject
    {
        T Jello();
    }

    interface IObject
    {

    }

    class Cool : ICool<Object>
    {
        public Object Jello() { return new Object(); }
    }

    class Object : IObject
    {

    }
}