我有这样的结构:
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)我可以分配变量来自动计算?
答案 0 :(得分: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)。
答案 1 :(得分:1)
个人ild让它成为一种扩展方法,(与@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);