我应该选择 IEnumerable 还是数组? [关闭]

2024-01-08

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

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> or Arrays)?


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该选择 IEnumerable 还是数组? [关闭] 的相关文章

随机推荐

  • django 有什么好的 User-Agent 解析插件

    有没有可以推荐的 User Agent String 解析插件或中间件 现在我正在使用django smartagent http pypi python org pypi django smartagent 0 1 1 但它的词典并不完整
  • 单独通过 @Value 注入属性映射

    如何使用 Values注解 无需在 applicationContext xml 中定义任何内容或任何其他 XML 文件 我使用的是 spring boot 它没有anyXML 文件 我也不想要任何 XML 文件 所以请不要告诉我在 XML
  • SwiftUI 禁用列表边框 iOS 14 [重复]

    这个问题在这里已经有答案了 我发现如果视图包含 navigationView SwiftUI iOS 14 中的列表将具有类似边框的内容 有什么解决办法可以禁用边框吗 因为边框破坏了我的应用程序的设计 这是代码中不包含 Navigation
  • Laravel 队列被“杀死”

    有时 当我将大型数据集发送到作业时 我的队列工作人员会突然退出 taskmetas is an array with other arrays each subsequent array having 90 properties this
  • 为什么trickle 实用程序不会影响我的动态链接golang 程序?

    我有一个 golang 程序 可以通过 https 将大量数据上传到 OpenStack 对象存储 它依赖于golang标准库 net http 做这项工作 我想用trickle https linux die net man 1 tric
  • 如何在express中为静态文件设置动态路由

    目前 为了提供静态文件 我正在执行以下操作 app use express static dirname public then i start the server http createServer app listen port fu
  • Swift 中的 GCDAsyncSocket

    我想使用基于 ELM327 芯片的 OBD 加密狗打开 TCP 连接 所以我决定使用GCDAsyncSocket库 我写了这段代码 import UIKit import CocoaAsyncSocket class ViewControl
  • JavaScript 如何通过单击和拖动动态移动 Div

    好吧 看起来应该很简单 我需要获取一个已经存在的 div 并根据窗口内的鼠标位置移动它 我到处搜索 这导致我以过于复杂的方式做同样的事情 并且涉及到 j query 的使用 我需要严格使用 javascript 来完成我想做的事情 Meth
  • pyqt 按钮自动绑定到 on...click 函数,无需 connect 或 pyqtSlot

    我已经使用 pyqt5 和 qt designer 几个星期了 我习惯使用 connect 语句将信号连接到处理函数 昨天我编写了一段代码 它还自动将按钮单击信号连接到处理函数 而无需 pyqtSlot 装饰器 将单击的信号连接到函数会导致
  • 缺少 JavaFX 应用程序类

    我有这样的java代码 package mypackage import javafx application Application import javafx stage Stage public class MyApp extends
  • 创建函数App时出现“该区域不允许进行缩放操作”的错误

    我正在运行构建中的各个步骤Azure 中的无服务器 Web 应用程序 https learn microsoft com en us azure functions tutorial static website serverless ap
  • gzip/deflate 失败时抛出异常

    我在 ASP NET MVC 3 中的 gzip deflate ActionFilterAttribute 中遇到了一个有趣的问题 如果我的应用程序抛出异常 我不会得到 YSOD 而是得到一整页的乱码 如下所示 I m J J t iG
  • 如何删除网格布局小部件内的所有小部件并以相同的顺序重新创建所有小部件

    这是我之前的问题的延续 如何从左上角开始将小部件添加到网格布局 谢谢X Jacobs解决 tat 问题 现在我想删除所有这些小部件并以相同的顺序重新创建相同的小部件 就像刷新小部件库一样 谢谢 好的 这是我的 ui 当我单击 createP
  • 如何从包名称中获取应用程序的图标?

    我尝试了堆栈溢出的各种解决方案 但没有成功 我想要的是 我知道不同应用程序的包名称 我想从这些包名称中获取应用程序图标 在图像视图中显示这些图标 例如我有一个包名com example testnotification 如何获取此应用程序图
  • jQuery 单击停止传播

    我有一个简单的设置 一个表格 其单元格内有复选框 我有两个事件 一个事件响应单击复选框 另一个事件响应单击 tr 元素 当我单击复选框时 我不希望触发表行事件 我试过了event stopPropagation and return fal
  • 文本框的实时绑定属性更改[重复]

    这个问题在这里已经有答案了 我有一个TextBox控件绑定到我的视图模型中的属性 当前行为的工作方式是视图模型只会收到通知 其中的文本TextBox控件失去焦点后进行修改 每当TextBox实时改变状态 它附加到我的视图模型中的一个属性 用
  • 如何将键值对附加到 iPhone 上的 UIView?

    当我开始 iPhone 开发时 我在某处读到可以将键值对附加到 UIView 我知道所有 UIView 都可以用作字典来存储您可能想要附加到它们的任何数据 以防止不必要的子类化 然而 我到处寻找参考 并尝试自己实现该行为 但徒劳无功 我尝试
  • PowerMockito - 如何将whenNew()与类型化列表一起使用?

    我希望 PowerMockito 返回我的空数组列表Foos when new ArrayList
  • 根据 UIBezierPath 移动 UIView [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I ve a UI贝塞尔路径画这个 我希望红点在蓝色路径上无限移动 从右到左 从左到右 我怎样才能做到这一点 您可以使用CAKeyFr
  • 我应该选择 IEnumerable 还是数组? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我从事的许多项目中 每当我必须返回只读集合时 我都会使用IEnumerable