Read 和 Load 的语义差异

Semantic difference of Read and Load

我想知道 ReadLoad(在 C# 中)之间的语义区别是什么。比较时我看不出有什么不同。

对比

因为我希望我的程序有一个一致的命名,它处理很多简单地从持久存储中获取文件和更高级别的函数,这些函数也初始化、交叉引用和错误检查,所以我恳请您提供意见。

在您的示例中,"Read" 通常是指读取数据的 部分 。这是为了限制需要存储的数据量 and/or 在给定操作中处理,还是因为数据本身不是立即可用的(例如 Console.Read() 或从网络流),基本行为是相同的:数据被处理成比可以或将要处理的整个数据集更小的片段。

有一个例外ReadAllText(),它实际上一次读取了所有数据。但这是一种类型,其中所有其他执行类似的方法也使用单词 "Read"。在该上下文中使用 "Read" 可使 API 保持一致,不使用 "Load" 不会显着妨碍对 API 的理解(特别是因为方法名称还明确指出 "All Text"…在那种情况下看到所有的文本都不会让人感到惊讶,对吧?:)).

在您使用 "Load" 的示例中,它们会一次性消耗所有数据,并将其转换为其他内容,例如XML DOM 或程序集。这是一种与仅读取数据和最多对其进行最少处理(例如解码某些文本格式)的操作截然不同的操作。与 "Read" 操作相比,"Load" 将始终消耗所有数据,而不是允许选择一次只读取一部分。

阅读 API 是关于:

  • 以字节、字符等更小的单位读取数据
  • 有一个指针,主要是前向类型,如 DataReader
  • 已连接并从源读取
  • 适用于所有类型的数据,但如果在一段时间内保持实时连接,则可能是一个成本高昂的选择
  • 在整个过程中需要一致的连接
  • ADO.Net 连接架构就是示例

在另一端加载 API:

  • 一次加载内存中的所有数据
  • 打开连接,读取所有内容并关闭它,不保持实时连接
  • 可以使用数据来应用逻辑,在内存中向前/向后移动
  • 适用于较小的数据集,但由于内存和网络要求,可能无法处理较大的数据集
  • 加载后,可以在一段时间内作为断开连接的数据方便地使用
  • ADO.Net 断开连接的架构、Dataset、DataTable 和 IEnumerable 是有效示例