Представьте, что у вас есть код, который вы хотите расширить с помощью новой функции:
void DoSomething()
{
// ...
NewMethod();
}
Теперь вы вводите нового члена с именем NewMethod
. Однако у вас нет времени, чтобы реализовать это должным образом и оставить пустым:
public void NewMethod() { }
Через некоторое время вы, наконец, можете реализовать код этого члена без необходимости где и как назвать его, потому что это уже было сделано ранее.
Вы также можете создать интерфейс, который вы не реализуете. Таким образом, вы определяете только что делать, но не как .
Другой возможный сценарий - иметь член virtual
, который обычно ничего не делает, но в некоторых случаях (в некоторых конкретных реализациях) вы хотите, чтобы метод возвращал специфическое значение. См. Этот пост, например: Виртуальные методы без тела