C# 如何使Take()和Skip()模块化?
我有一个这样的结构:C# 如何使Take()和Skip()模块化?,c#,linq,bytearray,modular,skip-take,C#,Linq,Bytearray,Modular,Skip Take,我有一个这样的结构: public struct Response { public string Cmd; } byte[] cmd = resp.Skip(5).Take(3).ToArray(); x.Cmd = Encoding.UTF8.GetString(cmd); 还有一个主要的字节数组: Decode(StringToByteArray("0100002402433131000000000000000311")); 然后我在这个函数中有一个解码函数,我想这样做,取(
public struct Response
{
public string Cmd;
}
byte[] cmd = resp.Skip(5).Take(3).ToArray();
x.Cmd = Encoding.UTF8.GetString(cmd);
还有一个主要的字节数组:
Decode(StringToByteArray("0100002402433131000000000000000311"));
然后我在这个函数中有一个解码函数,我想这样做,取(5)和跳过(3):
public struct Response
{
public string Cmd;
}
byte[] cmd = resp.Skip(5).Take(3).ToArray();
x.Cmd = Encoding.UTF8.GetString(cmd);
我如何使这个模块化,因为我需要相同到多的函数,可能是位置不同。是否有其他方法,而不是使用Take(3)或Skip(5),我可以分配变量来自动计算它?这是您的另一个函数:
public T[] SkipTake<T>(IEnumerable<T> items, int skipCount, int takeCount) {
return items.Skip(skipCount).Take(takeCount).ToArray();
}
public T[]SkipTake(IEnumerable items,int skipCount,int takeCount){
return items.Skip(skipCount).Take(takeCount.ToArray();
}
它使用泛型,所以我读过这些(http://msdn.microsoft.com/en-us/library/512aeb7t(v=vs.90.aspx)。我个人将其作为一种扩展方法(与@siride的想法相同,但更流畅一点) 乙二醇
为此创建一个函数?并将5和3作为参数传递给该函数?如何?!我不应该触及我现有功能的模块化,因为我的通信将遵循我的标准,但是我需要用类似Take(bcmd.Length)的东西替换Take(3)到目前为止,我有错误,因为不同的数据类型,这5和3的位置将在另一个解码字符串不同,我需要更聪明的东西来计算和估计Cmd的位置基础Size@Artinos:“我不应该触及现有功能的模块化,因为我的通信将遵循我的标准”我不明白这是什么意思。