如果我有一個字節數組創建byte [] binBuffer = new byte [256]並填充100個字節的數組,如果我想只傳遞這些100字節到其他方法,是否有可能做到這一點,而不需要創建一個100字節的新字節數組,從舊數組複製到新數組,然後傳遞新數組?有什麼我可以通過前100個字節。我的應用程序特別適用於將數組傳遞給存儲過程。使用字節數組的一部分
17
A
回答
2
如果你可以使用LINQ:
SomeMethod(binBuffer.Take(100));
1
,如果你使用的是.NET 3.5,你可以使用採取()擴展方法並執行以下操作:
class Program
{
static void Main(string[] args)
{
byte[] b = new byte[1000];
dowork(b.Take(10).ToArray());
}
public static void dowork(byte[] b)
{
// do some work
}
}
1
當一個數組傳遞對一個方法來說,只有對它的引用才被實際傳遞,因爲數組實際上是引用類型。你基本上有一個指向數組的指針,然後方括號中的偏移量只是告訴你離開始有多少「槽」。因此,唯一真正的做法是將兩個參數傳遞給你的方法。一個是實際的陣列,第二個是最大數量,直到你需要去的地方,在你的情況下它會是100.在那個方法中,你只能遍歷數組,直到達到最大數量。
18
與緩衝器工作時,一個很常見的模式是:
Foo(byte[] data, int offset, int count) {...}
模式。但是,不能將其與SqlCommand
/參數一起使用,因爲分配給參數時會佔用整個緩衝區。你將需要一個新的陣列:
byte[] second = new byte[100];
Buffer.BlockCopy(first, firstOffset, second, 0, 100);
param.Value = second;
2
簡短的回答是:沒有。你所做的任何事情(除了將數組本身作爲參數傳遞外)都將創建一個新數組並將其中的前100個字節複製。
但是,由於您不是按值傳遞數組,而是在傳遞它的引用,所以如果數組是256字節或100,爲什麼對您有影響?你不會浪費更多的記憶。不過,您可能需要告訴該方法使用多少數組,因爲Length方法將返回完整長度。
編輯:我剛剛意識到你想要傳遞數組到存儲過程。這將複製整個數組。您只需複製您想要傳遞的元素。
相關問題
- 1. 使用部分緩衝區將多字節Unicode字節數組轉換爲NSString
- 2. 將String字節數組的一部分追加到StringBuilder中
- 3. 如何將Python元組(字節數組)的一部分轉換爲整數
- 4. 用字符串分割字節數組?
- 5. 使用字節數組
- 6. 使用字節數組
- 7. C#:使用字節數組
- 8. 將字節的一部分追加到另一個字節
- 9. 將一個字節分成幾部分
- 10. 將字節數組的部分轉換爲整數值
- 11. 將NSData字節數組的一部分複製到另一個NSData類型
- 12. 如何使用「細節」部分綁定一個組標題
- 13. char數組Vs字節數組使用哪一個?
- 14. 轉換TIFF字節數組PDF字節數組使用iTextSharp的用C#
- 15. 使用C#字節讀取字節數組我使用C#
- 16. 將文件的一部分複製到Java中的字節數組中
- 17. 區分字符串和字節數組?
- 18. 使用字節數組和字符串
- 19. 從GetBuffer獲得分配的字節數組的唯一字節是否安全?
- 20. 設置字符串的一部分等於數組的一部分
- 21. 複製一小部分字節
- 22. 如何將字節數組寫入現有文件的一部分?
- 23. 將3個獨立的字節數組組合到一個字節數組中
- 24. Arduino:一次檢查一個字節的字節數組
- 25. 使用NumPy反轉數組的部分
- 26. 在分隔符處分割一個字節數組
- 27. 按特定字節拆分字節數組(字符)
- 28. 查找字符串數組中的字符串的一部分
- 29. 從ByteArrayInputStream獲取內部字節數組
- 30. 使用另一個字節列表/數組來計算字節列表/數組中的出現次數
我懶得檢查 - 但這真的不只是將數組複製到一個大小爲100的新數組? – 2009-02-26 04:28:08
同意安德魯。這應該重新檢查。 – 2009-02-26 04:30:40