2013-06-20 4 views

ответ

5

Неожиданный IComparable был добавлен в версию 1.1 до введения дженериков, а IComparer<T> был добавлен вместе с генериками в версии 2.0.

Общая версия предпочтительна по той же причине, что и все общие интерфейсы - она ​​безопаснее и документирует намерение более четко. Типы Struct также не обязательно должны быть помещены в коробку при передаче в общий метод, поскольку они были бы для одного с аргументом object, например IComparable.CompareTo, так что также есть преимущество в производительности.

+0

спасибо. Не-универсальная версия не была удалена из-за соображений совместимости, я думаю? –

+0

_And_, если он используется против 'struct', он пройдет его без бокса. –

+0

@JohnThreepwood Справа: не было причин активно * ломать * разработчиков, которые использовали не общий интерфейс. Разумеется, они могли свободно обновляться на досуге. – dlev