C# 方法应该返回什么ReadOnlyCollection类型?
我已经看到了和它相关的其他问题,但我仍然对这个问题感到困惑 为了演示的目的,让我们假设我有一个类,在这个类中我公开了一个公共方法,如下所示:C# 方法应该返回什么ReadOnlyCollection类型?,c#,.net,generics,collections,C#,.net,Generics,Collections,我已经看到了和它相关的其他问题,但我仍然对这个问题感到困惑 为了演示的目的,让我们假设我有一个类,在这个类中我公开了一个公共方法,如下所示: public ReadOnlyCollection<Type> GetReadOnlyCollection(IEnumerable<Type> enumerable) { List<Type> list = enumerable.ToList(); return new ReadOnlyCollectio
public ReadOnlyCollection<Type> GetReadOnlyCollection(IEnumerable<Type> enumerable)
{
List<Type> list = enumerable.ToList();
return new ReadOnlyCollection<Type>(list);
}
public ReadOnlyCollection GetReadOnlyCollection(IEnumerable可枚举)
{
List=enumerable.ToList();
返回新的只读集合(列表);
}
接下来,我的方法是否应该返回实际的集合类(
ReadOnlyCollection
,collection
,等等)或它们的接口(IList
,ICollection
,等等)如果我希望返回一个ReadOnlyCollection
特别是?如果您返回一个尽可能通用的类型,您可以灵活地在以后更改实现。当然,您必须返回一个对消费者有用的类型。因此,一般来说,返回接口类型更好,也可以返回更通用的类型,只要这不会在用户端的使用中造成任何问题。我最初的问题不是非常明确的定义;应考虑以下几点:
- 用户是否只需要枚举代码?如果是这样,
可能就足够了IEnumerable
- 用户是否应该知道集合是只读的?如果是这样,
可能没问题IReadOnlyCollection
- 是否要阻止用户将只读集合强制转换为可变类型?如果是,请使用
中的不可变集合System.Collections.immutable