当我调用ToString时没有find合适的方法来覆盖C#

为什么当我使用这个叫TaxiStation的class级(叫TaxiStation)的时候,

public override string TaxiInformation(int i) { return taxiCollectionDrivers[i].ToString(); } 

出租车类的ToString()

 public override string ToString() { string str; str = "Taxi ID: " + this.taxiId + "\nDriver Name: " + this.driverName + "\nPassengers " + this.numPass + "\nTotal Passengers: " + totalPassengers + "\nRate Per Kilometer: " + this.ratePerKilometer+ "\n\n Available: " + this.available ; return str; } 

这是显示错误没有合适的方法发现重写? 我如何解决它?

我只是 ,考虑到写入的消息不能与ToString(..)重叠相关,因为它存在于CLR的所有对象的父对象中,所以我这是所有

 public override string TaxiInformation(int i){ .... } 

方法。 为了能够覆盖一个方法,你必须在这个方法被重写的类型的类中拥有相同的方法(相同的签名)声明为virtualabstract

一个假设的例子:

 public class TaxiStation { ..... public virtual string TaxiInformation(int i){ .... } } public class Taxi : TaxiStation { public override string TaxiInformation(int i){ .... } } 

override修饰符是扩展或修改继承的方法,属性,索引器或事件的抽象虚拟实现所必需的。

重写的基本方法必须与重写方法具有相同的签名

MSDN:重写(C#参考)

例如:

 public abstract class MyBaseClass { public abstract void Foo(int i); } 

要么

 public class MyBaseClass { public virtual void Foo(int i) { // ... } } 

另外一个方法不可用于重写的原因是因为它被标记为封闭在基类中:

 public class ClassA // Inherited from object { public sealed override string ToString() { return base.ToString(); } } public class ClassB : ClassA { // Compilation error! public override string ToString() { return base.ToString(); } }