2012-12-19 59 views
1

我有這樣的結構:如何使Take()和Skip()模塊化?

Decode(StringToByteArray("0100002402433131000000000000000311")); 

然後,我有這個功能,我想要做的到裏面解碼功能:

public struct Response 
{ 
    public string Cmd; 
} 
我在此字節數組

而且還在主(5),並跳過(3)所示:

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

我怎樣才能使這個模塊化的,因爲我需要同許多功能,可能是位置不同的是有反正instea使用Take(3)或Skip(5)我可以指定變量來自動計算?

+2

創建一個函數? – zerkms

+1

並傳遞5和3作爲該函數的參數? –

+0

怎麼樣?我不應該觸摸我現有函數的模塊性,因爲我的通信將遵循我的標準,但是我需要用Take(3)來取代Take(bcmd.Length)到目前爲止,因爲數據類型不同 –

回答

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 0.90)的.aspx)。

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); 
相關問題