标签:c net class-design api
很多时候,在编写接受可枚举类型的函数时,我会遇到这种混乱.从以下选项中,哪种api暴露会更好:
public void Resolve(Func<bool>[] howtos)
public void Resolve(IEnumerable<Func<bool>> howtos)
public void Resolve(List<Func<bool>> howtos)
我通常根据以下内容做出决定:
如果需要通过添加或删除项来修改输入,则使用List,否则使用IEnumerable.不确定Array选项.
在决定暴露api时是否还需要考虑其他问题?是否有任何经验法则可以清楚地确定哪种情况应优先于另一种情况?
谢谢
解决方法:
您应始终接受限制最少的参数类型.
这意味着IEnumerable< T>,ICollection< T>或IList< T>.
这样,客户端可以自由地传递任何类型的实现,例如数组,HashSet< T>或ReadOnlyCollection< T>.
具体来说,你应该采用IEnumerable< T>如果您只需要迭代数据,ICollection< T>如果您还想添加或删除项目,或者您需要知道大小,则IList< T>如果你需要随机访问(索引器).
标签:c,net,class-design,api 来源: https://codeday.me/bug/20190614/1237921.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。