OriginalGriff
List - это интерфейс, а не класс, и поэтому он не может определить тело какого-либо метода-он определяет сигнатуры методов (то, что методы должны вводить и выводить), но не может определить какую-либо реализацию кода. Когда конкретный класс добавляет интерфейс, он должен предоставить реализации всех сигнатур методов, которые были определены определением интерфейса.
Аналогично, вы не можете создать экземпляр интерфейса - вы можете создать только экземпляры классов, реализующих интерфейс. Но вы можете объявить переменную типа интерфейса, и она может содержать любой объект, который реализует этот интерфейс.
При попытке использовать метод Add платформа определяет, какой тип объекта находится в переменной во время выполнения, и вызывает соответствующую версию метода Add, которая была определена в этом классе.