c# - 我应该支持 IEnumerable<T> 还是数组?

标签 c# .net vb.net design-principles

<分区>

在我从事的许多项目中,每当我必须返回只读集合时,我都会使用 IEnumerable<T>接口(interface)并使其类型特定,如下所示:

Public ReadOnly Property GetValues() As IEnumerable(Of Integer)
    Get
        'code to return the values'
    End Get
End Property

大多数时候,我会返回一个列表,但在某些函数和只读属性中,我会返回一个数组,该数组也可以通过扩展方法的友善礼貌来达到目的。

我的问题是 我返回 IEnumerable<T> 是否违反了任何设计原则? s 而不是特定类型(例如:List<T>HashSet<T>Stack<T>Array s)

最佳答案

我通常更喜欢 IEnumerable<T>以及。最主要的是问问自己从方法返回(或传递给它,在方法参数的情况下)的实际(甚至最小)功能是什么。

如果您需要做的只是枚举结果集,那么 IEnumerable<T>正是这样做的。不多也不少。这使您可以在某些情况下灵活地返回更具体的类型(如果需要)而不会破坏方法的占用空间。

关于c# - 我应该支持 IEnumerable<T> 还是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156561/

相关文章:

c# - 如何以及何时为 WinForms 控件设置字体

c# - Entity Framework - 类似属性的表达

Vb.net - 设置控件边距值

vb.net - OSX + VB.Net,简单地说,从 Windows 移植我的程序需要什么,也许是通过单声道?

c# - 添加简单的 TagHelper 会导致此错误 : "RenderBody has not been called for the page "

c# - 文件上传到 Windows Azure Blob

c# - Xamarin 绑定(bind)从列表中动态创建的按钮

.net - 如何设置或清除 Windows Mobile 设备使用的代理服务器?

c# - 您可以/如何在运行时为 PropertyGrid(对于 PCL)指定编辑器?

vb.net - VB.NET可以用作游戏引擎吗?