我在C#中的测试代码:
namespace DSnA
{
public abstract class Test : IComparable
{
}
}
导致以下编译器错误:
error CS0535: 'DSnA.Test' does not implement interface member
'System.IComparable.CompareTo(object)'
由于该类Test
是一个抽象类,为什么编译器需要它来实现接口?这项要求不是仅对具体课程是强制性的吗?
哈哈。我写了一件事,然后决定更改它。抱歉。:)
—
Joel
根据反对意见和对已接受答案的评论,我相信反对意见的产生是因为问题的措辞方式。OP询问“为什么会这样”,这超出了stackoverflow的范围。我自己遇到了这个问题,问题更像是“我错过了什么吗?我真的必须提供实现吗?这是否克服了它成为抽象类的观点?” 对此的答案是“不,您不必提供实现(这将违背抽象类的目的),但是您要做的就是使您的情况正常运行。”
—
ToolmakerSteve
我发现了一种情况,您必须提供一个实现。在此接口具有可选参数。如果在基类中将方法作为抽象包括在内,则没有可选参数将无法编译继承的类(这违背了可选参数的目的)。在这种情况下,我只是抛出NotImplementedException。
—
Paul McCarthy
忽略我之前的评论-它没有按预期工作,在此不适用最小惊讶原则。
—
Paul McCarthy