如果我创建了一个字节数组byte[] binBuffer = new byte256,并且填满了该数组的100个字节,如果我只想将这100个字节传递给其他方法,是否可以这样做,而不是创建一个100字节的新字节数组,从旧的数组复制到新的数组,然后传递新的数组?有没有什么办法,我可以只传递前100个字节。我的应用程序特别适用于将数组传递给存储过程。
发布于 2009-02-26 04:37:06
在使用缓冲区时,一个非常常见的模式是:
Foo(byte[] data, int offset, int count) {...}
模式。但是,您不能将其与SqlCommand
/参数一起使用,因为当您为参数赋值时,它将消耗整个缓冲区。您将需要一个新的数组:
byte[] second = new byte[100];
Buffer.BlockCopy(first, firstOffset, second, 0, 100);
param.Value = second;
发布于 2009-02-26 04:25:59
如果您可以使用linq:
SomeMethod(binBuffer.Take(100));
发布于 2009-02-26 04:27:28
如果您使用的是.net 3.5,则可以使用Take()扩展方法并执行以下操作:
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
}
}
https://stackoverflow.com/questions/589099
复制相似问题