Согласно спецификации языка CSharp.
Интерфейс определяет контракт, который может быть реализован классами и Структуры. Интерфейс не обеспечивает реализацию элементов он определяет - он просто указывает членов, которые должны быть предоставлены классы или структуры, реализующие интерфейс.
Итак, у меня есть это:
interface ITest
{
IEnumerable<int> Integers { get; set; }
}
И я имею в виду. "У меня есть контракт с свойством как совокупность целых чисел, которые вы можете перечислить".
Затем мне нужен следующий интерфейс. Реализация:
class Test : ITest
{
public List<int> Integers { get; set; }
}
И я получаю следующую ошибку компилятора:
'Test' не реализует член интерфейса 'ITest.Integers'. "Test.Integers" не может реализовать "ITest.Integers", потому что он не имеют соответствующий тип возврата 'System.Collections.Generic.IEnumerable'.
Пока я могу сказать, что мой класс Test реализует контракт ITest, потому что свойство List of int на самом деле является IEnumerable из int.
Итак, компилятор С# говорит мне об ошибке?