byte[] result = memStream.ToArray();
memStream.Close();
byte[] temp = result.Take(255);
var str = System.Text.Encoding.Default.GetString(temp);
Run Code Online (Sandbox Code Playgroud)
上面的失败就result.Take(255);行了.它说我不能转换IEnumerable到byte[],并询问如果我错过了一个演员.
我是C#的新手,不确定该怎么做.
Take() 返回枚举时执行的枚举器对象:
这不是一个数组,因此您无法将其分配给对字节数组的引用.但是,使用LINQ,您可以通过调用其方法获取任何序列并将其转换为适当类型的数组ToArray():
byte[] temp = result.Take(255).ToArray();
Run Code Online (Sandbox Code Playgroud)
ToArray()枚举结果Take(255),将结果放入一个新数组,并返回数组.
这有点令人困惑,因为你可以枚举一个数组就像你可以枚举你得到的东西Take(255)- 但你可以枚举很多东西.这只是他们共同的一种行为,但它们实际上是非常不同的对象.
你可以指定一个IEnumerable<byte>:
IEnumerable<byte> a = result.Take(255);
IEnumerable<byte> b = result.Take(255).ToArray();
Run Code Online (Sandbox Code Playgroud)
......因为这是他们真正有共同点的一件事.