Byte类型怎么增量赋值??

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:19:07
tc = tl.AcceptTcpClient();
ns = tc.GetStream();
byte[] bytes = new byte[1];
byte[] data = new byte[1] { 0 };
while (ns.Read(bytes, 0, bytes.Length) != 0)
{
data += data;
}
data += data;这个出错了,怎么循环读取byte类型的数据?维数也跟着增加!
但是我用ArrayList和Array创建的对象都不是“byte[]”类型,我是要一个byte[]类型跟着增加。
我监视变量ArrayList和Array类型都不是byte[],但是Array[0],ArrayList[0]有值。

要拷贝数组用 System.Array.Copy 静态方法,但要确保目标数组有足够的大小容纳源数组。

要维数跟着增加,即我们常说的:动态数组。
使用 System.Collection.ArrayList 类或 System.Collections.Generic.List 泛型类

使用 ArrayList 类示例:
using System.Collection;
ArrayList al = new ArrayList();
while(ns.Read(bytes, 0, bytes.Length) != 0)
{
al.Add(bytes[0]);
}

使用泛型 List 类示例(.net 2.0 版本新增的):
using System.Collection.Generic;
List<byte> list = new List<byte>();
while(ns.Read(bytes, 0, bytes.Length) != 0)
{
list.AddRange(bytes)
// 或 list.Add(bytes[0]);
}

另:若从流中读取一个字节,使用 ReadByte() 方法比较省事,不推荐使用 Read() 方法,示例:
using System.Collection.Generic;
List<byte> list = new List<byte>();
int value = ns.ReadByte()
while(value != -1)
{
list.Add((byte)value);
value = ns.ReadByte();
}

另2:若流支持查找,则可以通过 Length 属性判断流的大小初始化数组,然后一次性读取数据,这样性能较好,不建议一个字节一个字节读取。
// 数据量较小的流,推荐此方法(一般流的大小最好不要查过 10M 推荐)