0

1つの初心者の質問。私はよくそのようなものを見ます:

        public Constructor(Game game, string effectAssetName)
        : base(game)

私は本当に2行目の機能を理解することはできません。これはベースと呼ばれますが、何のために?ゲームはゲームゲームの最初の行ですでに定義されていませんか?

4

1 に答える 1

1

「base」呼び出しは、スーパークラスで呼び出すコンストラクターを決定します。たとえば、:base(game)がないと、スーパークラスは初期化されません(正確には、特定のコンストラクターは実行されませんが、使用可能なコンストラクターがある場合は、パラメーターなしのコンストラクターが実行される可能性があります)。 )。

通常、Gameクラスをサブクラス化すると、独自の機能が追加されますが、それでもGameクラスを初期化して、独自の機能を実装する必要があります。基本的に次の呼び出しを行っています

MyGameObject.Constructor(game, effectAssetName) 

Game.Constructor(game);

さらに(悪い:))例

class Fruit 
{    
  private bool _hasPips;

  public Fruit(bool hasPips) 
  {
     _hasPips = hasPips;
  }
}

class Apple : Fruit 
{
  private bool _isGreen;

  public Apple(bool isGreen, bool hasPips) : base(hasPips)
  {
    _isGreen = isGreen;
  }
}

新しいAppleを作成するとき、base(hasPips)の呼び出しが行われます。これがないと、FruitスーパークラスのhasPipsプロパティが設定されません(実際、この場合、base(bool)コンストラクターを呼び出さずにAppleでコンストラクターを作成することは違法です。 Fruitにはパラメーターなしのコンストラクターがないため、Fruitに)

于 2012-05-18T10:59:45.147 に答える