Когда использовать IEnumerable вместо IEnumerable <> - PullRequest
1 голос
/ 30 сентября 2008

Из-за отсутствия универсальной дисперсии в .NET Framework, является ли более «правильным» иметь методы, которые обрабатывают неуниверсальные версии интерфейсов System.Collection, если методы разрабатываются для обработки нескольких типов?

В идеале, после перехода на .NET 3.5 код должен быть изменен для преобразования этих методов в методы расширения.

Ответы [ 4 ]

1 голос
/ 03 января 2009

В этом случае (IEnumerable) реализация универсальной версии лучше, так как она происходит от IEnumerable (не-Generic), так что это становится спорным пунктом, оба доступны для вас.

1 голос
/ 30 сентября 2008

Нет, более "правильная" вещь - это сделать методы, которые обрабатывают несколько типов, сами по себе.

0 голосов
/ 30 сентября 2008

Вот хорошая статья, объясняющая это.

Единственное решение, которое я вижу, это последовать совету статьи и сделать метод также общим.

Но я не уверен, насколько хорошо он выдержит метод расширения.

0 голосов
/ 30 сентября 2008

Определите «множественные типы», например, список, который содержит как автомобили, так и собак? Или один Список, который содержит Автомобили, и другой, который содержит Собак? Если вы не делаете что-то «особенное», я бы сказал, что правильная вещь - реализовать универсальную версию, а не неуниверсальную версию.

...