1

Taxi クラスの toString を呼び出すこのクラス (TaxiStation と呼ばれる) を使用する理由:

public override string TaxiInformation(int i)
        {

            return taxiCollectionDrivers[i].ToString();

        }

Tax クラスの 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;    
        }

オーバーライドする適切なメソッドが見つかりませんというエラーが表示されますか? どうすれば解決できますか?

4

2 に答える 2

1

にあるすべてのオブジェクトの親に存在するため、書き込まれたメッセージはオーバーライドに関連付けることができないことを考えると、私それがすべてだと思いますToString(..)CLRobject

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

方法。メソッドをオーバーライドできるようにするには、このメソッドがオーバーライドされる型の基本virtualクラスに、 orのように宣言された同じメソッド (同じシグネチャ) が必要abstractです。

仮定の例:

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

}


public class Taxi : TaxiStation 
{
    public override string TaxiInformation(int i){
       ....
    }
}
于 2012-10-27T10:32:03.177 に答える
0

オーバーライド修飾子は、継承されたメソッド、プロパティ、インデクサー、またはイベントの抽象または仮想実装を拡張または変更するために必要です。

..。

オーバーライドされる基本メソッドは、オーバーライドメソッドと同じシグネチャを持っている必要があります

MSDN:オーバーライド(C#リファレンス)

例えば:

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

また

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

メソッドがオーバーライドに使用できないもう1つの理由は、基本クラスでシール済みとしてマークされているためです。

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();
    } 
}
于 2012-10-27T11:10:05.280 に答える