c# - ArraySegment<T> 类有什么用?

标签 c# arrays .net

我刚刚遇到 ArraySegment<byte>在子类化 MessageEncoder 时键入类。

我现在明白它是给定数组的一段,有一个偏移量,不可枚举,也没有索引器,但我仍然不明白它的用法。有人可以举例说明吗?

最佳答案

ArraySegment<T>.NET 4.5 中变得更加有用+ 和 .NET Core因为它现在实现了:

  • IList<T>
  • ICollection<T>
  • IEnumerable<T>
  • IEnumerable
  • IReadOnlyList<T>
  • IReadOnlyCollection<T>

相对于 .NET 4 version它没有实现任何接口(interface)。

类(class)现在可以参与 LINQ 的精彩世界,因此我们可以执行常见的 LINQ 操作,例如查询内容、在不影响原始数组的情况下反转内容、获取第一项等:

var array = new byte[] { 5, 8, 9, 20, 70, 44, 2, 4 };
array.Dump();
var segment = new ArraySegment<byte>(array, 2, 3);
segment.Dump(); // output: 9, 20, 70
segment.Reverse().Dump(); // output 70, 20, 9
segment.Any(s => s == 99).Dump(); // output false
segment.First().Dump(); // output 9
array.Dump(); // no change

关于c# - ArraySegment<T> 类有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600024/

相关文章:

java - 递归检查是否可能将数组拆分为满足特定条件的两个数组

c# - 'MSDAORA.1' 提供者未在本地机器上注册

c# - 将内存流移至文件流时 PDF 文件损坏且无法修复

c# - 在接口(interface)签名相同的接口(interface)之间转换

c# - 比较 IP 地址,如果它低于另一个

c# - 不能多次初始化var变量

c# - 在 Visual Studio 2010 中查看控制台的输出?

c# - 我应该为任何方法结果做 Contract.Ensures 吗?

Java空点异常错误

c++ - 遇到二维结构数组 C++ 的问题