gpt4 book ai didi

c# - 为什么这个接口(interface)实现不起作用?

转载 作者:行者123 更新时间:2023-11-30 18:55:05 26 4
gpt4 key购买 nike

我似乎遇到了接口(interface)实现的基本语法问题。基本上我有这个:

    public interface IMarkerInterface
{
}

public class ConcreteObject : IMarkerInterface
{
}

public interface IDoStuffInterface
{
void DoStuff(IMarkerInterface obj);

// also doesn't work
// void DoStuff<T>(T obj) where T : IMarkerInterface;
}

public class ConcreteDoStuff : IDoStuffInterface
{
public void DoStuff(ConcreteObject c)
{

}
}

在我看来,ConcreteObject 实现了 IMarkerInterface,因此 ConcreteDoStuff.DoStuff() 应该实现 IDoStuffInterface

但是我得到一个编译错误“Error ConcreteDoStuff does not implement interface IDoStuffInterface.DoStuff()”

怎么会?

最佳答案

您实现的方法需要与接口(interface)具有完全相同的签名。虽然所有“ConcreteObject”对象都是“IMarkerInterface”类型,但并非所有“IMarkerInterfaces”都是“ConcreteObject”。因此这两个签名是不等价的。接口(interface)必须能够向 CLR 保证该类型的任何对象都实现了有效的方法。

关于c# - 为什么这个接口(interface)实现不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com