为什么在实现接口时没有返回类型的隐式强制转换
本文关键字:转换 返回类型 实现 接口 为什么 | 更新日期: 2023-09-27 18:20:10
C#编译器不允许以下内容。它说Cool对ICool的Jello方法的实现不返回IObject。但是Object是一个IObject。为什么不支持?
interface ICool
{
IObject Jello();
}
interface IObject
{
}
class Cool : ICool
{
public Object Jello() { return new Object(); }
}
class Object : IObject
{
}
以下是C#不支持返回类型协方差的解决方法(请参阅返回派生类型时的"接口未实现"):
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
{
}
}