Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使Take()和Skip()模块化?_C#_Linq_Bytearray_Modular_Skip Take - Fatal编程技术网

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:“我不应该触及现有功能的模块化,因为我的通信将遵循我的标准”我不明白这是什么意思。