【发布时间】:2013-08-09 16:02:24
【问题描述】:
我正在用 C# 编写一个程序。我正在尝试做某事,但它没有达到我的预期。
我有一个接口I,类C1和类C2。
C1 实现接口I。 C2 继承自 C1。
接口I有一个名为equals的方法声明,它在C1中实现。在类 C2 中,也有一个 equals 方法,它通过检查其他事物来确定相等性来扩展父类 (C1) equals 方法。在 C2 类的 equal 方法中,我使用 base 关键字调用 C1 中的 equals 方法,并使用了一些额外的变量来决定相等。你可以这样想,根据 C1 相等取决于 3 个变量,对于 C2 相等取决于 5 个变量,包括 C1 中的变量。
到目前为止,没有问题。但是,在接受接口 I 作为参数的方法中,声明如下:
void myMethod(I param1)
当我通过 C2 实例时,我想在 C2 (扩展之一)中使用 equals 方法,当我通过 C1 实例我想在 C1 中使用 equals 方法。但是,程序每次在C1中使用equals方法,在C2中从不使用equals。我做错了什么,我怎样才能让程序在正确的类中使用equals方法。
谢谢
【问题讨论】:
-
你能发布你的类和接口的简化代码吗?
标签: c# inheritance overloading