首先,我不认为这个问题是这些 SO 问题的重复:
我是否应该总是返回 IEnumerable<T> 而不是 IList<T>? 和IEnumerable<T> 作为返回类型
众所周知,引入多层的主要目的是减少耦合。
我们必须为数据访问定义一些接口,我们的 BL 不应该关心 DAL 实现的细节。如果提到的接口返回IEnumerable<T>
BL 不知道它只是一个静态的IEnumerable
还是延迟执行的东西。同时,这个特定的细节会极大地影响性能,并且根据实现需要不同的编码。好吧,在我们要多次迭代集合的情况下,
可以调用.ToList()
each 。IEnumerable
但是由于不必要的新列表实例化,这会降低静态集合的性能。
所以我试图了解哪种方法更好。
更通用且性能可能更低与更耦合 - 更高性能。我想,没有灵丹妙药,但它可能是我错过的其他方法。