ICollection <Person>的返回类型是什么意思?

Den*_*ail 4 .net c# interface

我正在查看Entity Framework 4的一些代码示例,作者创建了一个返回ICollection <Person>的方法.我知道ICollection是一个接口.我知道Person是集合中的对象类型.我知道我正在收回一些人物.

这个问题.为什么选择ICollection?为什么不列出<>?为什么这样使用接口?我已经将接口用作类的"蓝图",指定了所需的成员,但我并不真正理解这里的用法.

Ree*_*sey 12

在公共API中返回接口而不是具体类通常会更好.

这允许实现稍后更改.例如,它实际上可能正在返回List<T>.然而,稍后,可以进行优化以返回可以具有更好的存储器效率,允许流传输或许多其他优点之一的不同类型的集合.只要该类仍然实现ICollection<T>,该实现可以自由切换而不会导致API更改.