我刚刚遇到 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/