что подразумевается под реализацией интерфейса по умолчанию - PullRequest
8 голосов
/ 12 марта 2010

Я видел это утверждение во многих образцах документации, например здесь

Этот класс является реализацией интерфейса "ISomeInterface" по умолчанию

что именно это значит? Спасибо

Ответы [ 3 ]

9 голосов
/ 12 марта 2010

Это несколько вводит в заблуждение, поскольку интерфейс по определению не обеспечивает реализацию.

Однако многие части инфраструктуры пытаются упростить жизнь - поэтому они предоставляют метод, который принимает интерфейс, но также обеспечивает перегрузку без параметров. Хороший пример: List<T>.Sort.

Документация здесь предполагает, что, если вы используете метод, который обычно требует IComparer<T>, но используете его через некоторую перегрузку, которая этого не делает, вы получите вместо этого ссылочную «реализацию по умолчанию».

Однако, это действительно «деталь реализации» классов, не связанных с самим интерфейсом. Я лично думаю, что это плохой выбор слов в документации, и должно быть что-то вроде:

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

Это, на мой взгляд, придало бы более ясное значение этому ...

3 голосов
/ 12 марта 2010

Это означает, что когда вы вызываете метод Sort без аргумента (без явного указания компаратора), он будет использовать эту реализацию по умолчанию.

0 голосов
/ 12 марта 2010

Это означает, что этот класс является тем, который реализует интерфейс.Он указывает на объект, который реализует сам интерфейс без каких-либо производных или унаследованных членов, но просто интерфейс.Это класс, который непосредственно соответствует этому интерфейсу.

public interface IComparer {
    // Some members to implement here.
}

public class Comparer : IComparer {
    // IComparer members implementation
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...