используя базовые классы на другом конструкторе классов C # - PullRequest
0 голосов
/ 15 августа 2010

Я пытаюсь понять шаблон наблюдателя, используя C #, сначала у меня есть абстрактный класс, работающий как Subject, называемый Stock, затем я создаю класс concreteSubject, поэтому я собираюсь назвать его IBM, так как класс concreteSubjectсобираюсь наследовать от Stock, поэтому я делаю что-то вроде этого:

class IBM : Stock
{
    // Constructor
    public IBM(string symbol, double price)
      : base(symbol, price)
    {
    }
}

, чего я не понимаю, это ": base (symbol, price)", почему я должен его использовать?что это значит?похоже, что он наследует переменные символа и цены, но почему, если они объявлены как параметры в публичной функции IBM

, я получаю этот код из примера, который я нашел в:

http://www.dofactory.com/Patterns/PatternObserver.aspx#_self1

Ответы [ 3 ]

2 голосов
/ 15 августа 2010

Вызывает конструктор базового класса (Stock). Если вы посмотрите в Stock код класса, он будет выглядеть так

public class Stock {
    private string _symbol;
    private double _price;

    public Stock(string symbol, double price)  // this constructor is called
    {
         this._symbol = symbol;
         this._price = price;
    }
} 

Обратите внимание, что это только конструктор в классе Stock, поэтому вы должны вызывать его явно во всех производных классах как base(symbol, price).

0 голосов
/ 15 августа 2010

Просто проверьте следующий ресурс для лучшего понимания этой конструкции: Конструкторы в C #

0 голосов
/ 15 августа 2010

Эта конструкция означает, что конструктор IBM вызывает конструктор Stock, используя те же параметры.

Обычно в конструкторе IBM есть некоторый дополнительный код.

На MSDN есть несколько примеров Использование конструкторов (Руководство по программированию в C #)

...