通过引用传递索引的清洁替代方案

时间:2015-06-25 14:30:24

标签: c# parsing indexing reference refactoring

在我的代码中,我正在解析一个字节数组。要顺序解析我当前在索引中传递的字节,如下所示:

headerData = ParseHeader(bytes, ref index)
middleData = ParseMiddle(bytes, ref index)
tailData   = ParseTail  (bytes, ref index)

如果没有硬编码增加标头的数量,有没有办法实现类似的功能而不必通过引用传递索引?这是使用 ref 关键字的罕见情况之一是最佳解决方案吗?

1 个答案:

答案 0 :(得分:0)

就像SLaks所说,一种可能的解决方案是使用流。

要从当前字节数组创建流,您可以执行以下操作:

MemoryStream stream = new MemoryStream(bytes);

要读取流的当前字节,您可以使用ReadByte方法,如下所示:

byte b = stream.ReadByte();

流将跟踪数组中的当前索引,因此您的新代码将如下所示:

MemoryStream stream = new MemoryStream(bytes);
headerData = ParseHeader(stream)
middleData = ParseMiddle(stream)
tailData   = ParseTail  (stream)

查看documentation以查看可用于MemoryStream的其他方法。