我可以用两种方式编写我的代码来实现我的目标,但是想知道哪一个是最佳实践?
Collection<MyClass> obj = new Collection<MyClass>();
Run Code Online (Sandbox Code Playgroud)
要么
IEnumerable<MyClass> obj = new Collection<MyClass>();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,IEnumerable<MyClass> obj = new Collection<MyClass>()
完全没有意义,因为你有一个空集合,你无法添加项目(因为IEnumerable
不允许它).这有用吗?
除此之外,如果我们谈论的是一个不会暴露于方法之外的代码的局部变量,那么唯一重要的是方便和清晰.您可以使用等效的第一种形式来最大化这两种形式:
var obj = new Collection<MyClass>();
Run Code Online (Sandbox Code Playgroud)
如果该对象被暴露于外部的代码(例如,通过一个属性,或者如果它是由一个方法返回),那么你应该选择,让您给出类的公有接口中最好的感觉的类型.这意味着根据经验,您应该使用尽可能最少的特殊类型,并且总是更喜欢接口.
因此,如果您要公开,obj
那么您应该使用,IEnumerable
如果您的代码用户不打算修改该集合.否则你应该使用,ICollection
如果可以的话; 如果它仍然不够IList
.
归档时间: |
|
查看次数: |
240 次 |
最近记录: |