Ответ 1
В С# вы все еще определяете методы, но вы не предоставляете тело, и вы отмечаете его как абстрактный. Например:
interface IFoo
{
void Bar();
}
abstract class Foo : IFoo
{
public abstract void Bar();
}
Или иначе: вам не нужно "внедрять" его (что было бы ужасным ограничением для абстрактных классов); однако в С# вам нужно сказать компилятору, что вы намеренно передаете доллар в конкретные подклассы - и приведенная выше строка кода показывает, как это сделать.
[Комментарии и жалобы, жалующиеся на то, что это не ответ на вопрос, не имеют смысла. Кто-то, приходящий к stackoverflow, получивший эту ошибку компилятора, но имеющий абстрактный класс, в котором было бы ошибкой поставлять реализацию, застрял без хорошего решения, - должен был бы написать методы реализации, которые бросали исключения во время выполнения, вокруг - пока они не будут иметь вышеуказанную информацию. Хорошо или плохо, что С# требует, чтобы эта эксплицитность выходит за рамки stackoverflow и не имеет отношения к вопросу или к этому ответу.]