关于 C#循环的问题,虚心求指教
代码如下
if (buffer[0] == 0x00 && buffer[1] == 0x32)
{
int i = 1;
do
{
i++;
} while (buffer[i] != 0x0D);
buffer.CopyTo(0, hex_data, 0, i);//复制一条完整数据到具体的数据缓存
data_1_catched = true;
buffer.RemoveRange(0, i);//正确分析一条数据,从缓存中移除数据。
}
这是段死循环代码,buffer[]数组是我用来接收数据的,但是数据不一定完整,很有可能不包含那个判断,while (buffer[i] != 0x0D);很有可能这次接收的数据里面不包含0x0D这个值,这样i就会不断增加而超过buffer.Count,于是程序就报错了。错误是:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
求大神指点迷津
我修改了一下,改成
do
{
if (i< buffer.Count)
{
i++;
}
else
{
break;
}
} while (buffer[i] != 0x0D);
还是会报错
代码如下
if (buffer[0] == 0x00 && buffer[1] == 0x32)
{
int i = 1;
do
{
i++;
} while (buffer[i] != 0x0D);
buffer.CopyTo(0, hex_data, 0, i);//复制一条完整数据到具体的数据缓存
data_1_catched = true;
buffer.RemoveRange(0, i);//正确分析一条数据,从缓存中移除数据。
}
这是段死循环代码,buffer[]数组是我用来接收数据的,但是数据不一定完整,很有可能不包含那个判断,while (buffer[i] != 0x0D);很有可能这次接收的数据里面不包含0x0D这个值,这样i就会不断增加而超过buffer.Count,于是程序就报错了。错误是:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
求大神指点迷津
我修改了一下,改成
do
{
if (i< buffer.Count)
{
i++;
}
else
{
break;
}
} while (buffer[i] != 0x0D);
还是会报错
解决方案 »
- 这样导入和导出该怎样实现?
- 如何实现qq的那种有消息过来,窗口就在任务栏闪的效果?
- 关于c#下载的时候文件名的问题,送分啊!!
- 菜鸟求datagrid删除一行数据的问题
- 请教多进程对同一个文件的同时写入问题?
- 谁能帮我详细解释一下这个正则表达式:^(?:\/(\w|\s|\.)+\/Intro\.aspx)$
- 强烈需要帮助~~~一个有难度,没有挑战性的问题!!!
- ++++++++刚学c#.net两个月,做了一个项目招聘网,请大家来批一下,感谢csdn,希望大家共同交流!++++++++++++
- 谁有精通C#数据库编程源代码
- 如何穿透放火墙!!
- 求大神解决C# winform实现边滚动滚动条边加载图片?类似搜狗壁纸的?
- 请问这个 new[] 循环语句的写法,在线等/
{
i++;
} while (buffer[i] != 0x0D && i<buffer.Count);
while的判断条件是可以组合的~~
RemoveRange后buffer长度会变的,你跟踪下很容易就发现的
{
i++;
} while (buffer[i] != 0x0D && i<buffer.Count-1);
{
i++;
} while (buffer[i] != 0x0D && i<buffer.Count-1);