C# 为什么在实现接口时没有对返回类型进行隐式转换?
C编译器不允许以下操作。它说Cool对ICool的Jello方法的实现不会返回IOObject。但对象是一个对象。为什么不支持这一点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 { } 以下是不支持返回类型协方差
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
{
}
}