Как использовать абстрактный класс в C # - PullRequest
1 голос
/ 29 июля 2011

У меня есть API, и он использует абстрактный класс.

Я не знаком с абстрактным классом, и я также исследовал его.

Пока это мой код:

[DataContract]
public abstract class Questions_Base
{
 public void Import(Oasis OasisSource);
}

  public class Questions : Questions_Base
   {
            public  Questions()
            {
                //
                // TODO: Add constructor logic here
                //
                }


    public void Import(Oasis OasisSource) {

        string B1String;
        while ((B1String = OasisFile.ReadLine()) != null)
        {
            Questions oQuestions = new Questions();
            Oasis oOasis = new Oasis();
            oOasis.B1 = B1String;
            oQuestions.Import(oOasis); //error here Object reference not set to an instance of an object.
         }
      }
}

Пожалуйста, сообщите мне .. спасибо!

Ответы [ 5 ]

2 голосов
/ 29 июля 2011

абстрактные классы используются для предоставления общих функциональных возможностей дочерним классам и вынуждают дочернюю иметь собственную реализацию абстрактных членов.он не может быть инициализирован, поэтому по отдельности он не является объектом, но участвует в поведении дочернего класса

1 голос
/ 01 февраля 2012

Модификатор abstract можно использовать с классами, методами, свойствами, индексаторами и событиями.

1 голос
/ 29 июля 2011

Ваше исключение вызвано чем-то в теле метода Questions.Import. Который вы нам не предоставили.

1 голос
/ 29 июля 2011

Сначала:

public void Import(Oasis OasisSource);

Должно быть

public abstract void Import(Oasis OasisSource);

Если вы хотите, чтобы все дочерние элементы этого абстрактного класса реализовывали свои собственные функции Import, в противном случае реализуйте функциональные возможности в базовом абстрактном классе, отметьте его как виртуальный, чтобы дочерние элементы могли при необходимости переопределить.

Ошибка в том, что вы неправильно реализовали эту функцию.

1 голос
/ 29 июля 2011

Это правильно - вы не можете создать экземпляр абстрактного класса. Вам нужно определить класс, который наследуется от вашего абстрактного класса, и создать объекты этого класса.

Абстрактный класс предназначен только для наследования от. Ничего другого.

в основном.

...