У меня есть простой метод, подобный этому:
private void CalculateTotals(IEnumerable<MyData> data)
{
decimal value1 = data.Sum(d => d.Value1);
decimal value2 = data.Sum(d => d.Value2);
}
Это работает и позволяет передавать любой тип коллекции, но это также выполнит многократное перечисление данных, которое может быть довольно дорогостоящим, так какЧто ж.
Теперь я могу изменить тип параметра на ICollection<MyData>
, но это будет означать, что вызывающая сторона не знает, может ли метод изменить / изменить коллекцию, поскольку для нее можно вызвать Add/Remove
.
Мое следующее предположение - IReadonlyCollection<MyData>
, которое кажется наиболее подходящим, но это будет означать, что каждый вызывающий абонент должен будет создать / преобразовать в новый ReadonlyCollection
.
Существуют ли какие-либо "предпочтительные" способырешения этого в .Net?