[英]no suitable method found to override C# when i call ToString
為什么當我使用該類(稱為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
中所有對象的父對象中,在object
,所以我想這是關於
public override string TaxiInformation(int i){
....
}
方法。 為了能夠覆蓋一個方法,您必須在該方法被覆蓋的類型的基類中具有聲明的相同方法(相同簽名),例如virtual
或abstract
。
一個假設的例子:
public class TaxiStation
{
.....
public virtual string TaxiInformation(int i){
....
}
}
public class Taxi : TaxiStation
{
public override string TaxiInformation(int i){
....
}
}
必須使用override修飾符來擴展或修改繼承的方法,屬性,索引器或事件的抽象或虛擬實現。
...
被覆蓋的基本方法必須具有與覆蓋方法相同的簽名 。
例如:
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.