я видел это заявление во многих образцах справки о, как here, что означает реализацию по умолчанию интерфейса
Этот класс является реализация по умолчанию интерфейса «ISomeInterface»
что именно это означает? Спасибо
я видел это заявление во многих образцах справки о, как here, что означает реализацию по умолчанию интерфейса
Этот класс является реализация по умолчанию интерфейса «ISomeInterface»
что именно это означает? Спасибо
Это несколько вводит в заблуждение, поскольку интерфейс по определению не обеспечивает реализацию.
Однако многие части фреймворка пытаются облегчить жизнь - поэтому они обеспечивают метод, который принимает интерфейс, но также обеспечивает перегрузку без параметров. Хорошим примером является List<T>.Sort
.
В документации здесь указывается, что если вы используете метод, который обычно требует IComparer<T>
, но используйте его через некоторую перегрузку, которая этого не делает, вместо этого вы получите ссылочную «реализацию по умолчанию».
Однако это действительно «деталь реализации» классов, не связанных с самим интерфейсом. Я лично считаю, что это плохой выбор слов в документации, а также должно быть что-то подобное:
Многие типы в рамках полагаются на общей реализации этого интерфейса, предоставляемого Comparer класса.
Это, на мой взгляд, обеспечить более четкое значение для этого ...
Это означает, что когда вы вызываете метод Sort без аргумента (без явного указания компаратора), он будет использовать эту реализацию по умолчанию.
Это означает, что этот класс реализует интерфейс. Он указывает на объект, который реализует сам интерфейс без каких-либо производных или унаследованных элементов, но явно интерфейс. Это класс, который прямо соответствует этому интерфейсу.
public interface IComparer {
// Some members to implement here.
}
public class Comparer : IComparer {
// IComparer members implementation
}
мне очень нравятся такие объяснения! =) –
@Will: Спасибо! Я делаю все возможное;) –
Добавить что-нибудь. Иногда в структуре используется шаблон специальных случаев (или шаблон Null Object), и реализация шаблона по умолчанию может быть частью шаблона. :) –