1

我有一个这样的结构:

public struct Response
{
    public string Cmd;
}

而且主要是我有这个字节数组:

Decode(StringToByteArray("0100002402433131000000000000000311"));

然后我在这个函数中有一个解码函数,我想像这样执行 Take(5) 和 Skip (3):

byte[] cmd = resp.Skip(5).Take(3).ToArray();
x.Cmd = Encoding.UTF8.GetString(cmd);

我如何制作这个模块化,因为我需要与许多可能位置不同的函数相同,无论如何,我可以分配变量来自动计算它而不是使用 Take(3) 或 Skip (5)?

4

2 回答 2

2

这是您的其他功能:

public T[] SkipTake<T>(IEnumerable<T> items, int skipCount, int takeCount) {
    return items.Skip(skipCount).Take(takeCount).ToArray();
}

它使用泛型,所以我会阅读那些(http://msdn.microsoft.com/en-us/library/512aeb7t(v=vs.90).aspx)。

于 2012-12-19T04:36:47.587 回答
1

个人认为它是一种扩展方法,(与@siride 的想法相同,但更流畅一些)

例如

public static class SkipTakeExtentions{
    public static T[] SkipTake<T>(this IEnumerable<T> items, int skipCount, int takeCount) {
        return items.Skip(skipCount).Take(takeCount).ToArray();
    }
}

用法:

thing.SkipTake(1,2);
于 2012-12-19T04:41:41.850 回答