private void RefreshAllUser(Msg msg)
        {
            int length = LV_SysUser.Items.Count;
            while (length > 0)
            {
                int i = 0;
                String IP = LV_SysUser.Items[i].SubItems[1].Text.ToString();
                LV_SysUser.Items[i].SubItems[5].Text = "0";
                msg.Msgtype = MsgType.PaperAlive;
                SendMsgToOne(IPAddress.Parse(IP), 9601, msg);
                length--;
                i++;
            }
        }
各位大神,此方法中的i在while语句内部定义,在while结束之前的i++有用吗?我感觉是没用的,那这样的话永远操作的都是Item[0],写源码的也是大神,应该也不会犯这么低级的错误吧,求指导while

解决方案 »

  1.   


    没看清楚。        private void RefreshAllUser(Msg msg)
            {
                int length = LV_SysUser.Items.Count;
                while (length > 0)
                {
                    int i = 0;
                    String IP = LV_SysUser.Items[i].SubItems[1].Text.ToString();
                    LV_SysUser.Items[i].SubItems[5].Text = "0";
                    msg.Msgtype = MsgType.PaperAlive;
                    SendMsgToOne(IPAddress.Parse(IP), 9601, msg);
                    length--;
                    i++;
                }
            }
    后面的i++是有用的,但是每次循环都把i赋值成0了啊,int i得定义到外面去。
      

  2.   

    while每次进来,i都是0,可以把i定义到while循环的外边,i每次会+1.不知道是不是你想要的结果。
    不是的话再讨论。
    private void RefreshAllUser(Msg msg)
            {
                int length = LV_SysUser.Items.Count;            int i = 0;            while (length > 0)
                {
                    String IP = LV_SysUser.Items[i].SubItems[1].Text.ToString();
                    LV_SysUser.Items[i].SubItems[5].Text = "0";
                    msg.Msgtype = MsgType.PaperAlive;
                    SendMsgToOne(IPAddress.Parse(IP), 9601, msg);
                    length--;
                    i++;
                }
            }
      

  3.   

    不要迷信大神,
    从你贴出的代来看,确实i一直是0,
    同事的代码有问题,要多沟通,才不会出现bug套bug的情况,奇怪的问题最好有KB
      

  4.   

    循环内定义的变量i,每次循环都初始化成0;
    估计有这一次错误,LZ以后应该不会在出这样的问题,
    这样的错误出一次就能记忆犹新。
      

  5.   

    int i =0;
    乃们不要这样说大神
    其实大神只是想show一下初始化
      

  6.   

    每次进来都把i设置为0,i++还有什么用,出了循环你还取不到i
      

  7.   

    明日科技的c#企业qq系统吧估计是把另外一段代码拷贝过来,本来循环用i,自己改为length,为了不用修改下面那两行,就设置i=0啦大牛大神很懒的
      

  8.   

    变量i出了while后就没有用了,它的生存周期就是在while里。
    不明白什么思路,是计数器还是控制循环,一定要找到那个人,呵呵~~
      

  9.   

    是不是有问题,得先确认这段程序的目的,先找原作者确认最好。
    没人规定 int i=0 必须放在 while 外面,也没有人规定循环中的数组必须要被遍历,要看作者意图。
      

  10.   

    没用你就删掉呗!一个团队中,真正的工作目标是“让测试通过”,而不是什么“写代码”。如果测试目标很低级,那么不管这个团队中有几个自称很nb的变成人员,实际上这个团队的层次都很低。而如果软件工程做得好,不是搞空洞的行政管理而是测试驱动管理,那么就算是大多数人水平比较接近于初级,其持续发布的能力也是有目共睹的。写代码算个屁本事啊?!你把写代码的目的列出来,然后能够保证一直(每一次修改其它代码时)都能保持之前的目的仍然可以通过,那么这才是本事。任何人、随时随地,都可以修改别人的代码,而又不会影响一个团队推出的产品的质量。这才是对于软件开发的过程管理刚刚好入门了啊。因此真正的大神会允许你、鼓励你随时去删除和修改别人的垃圾代码。而纠结于“大神写的i++代码是否敢于删除”,这就说明你身边没有真正的“大神”而只有一帮有“洁癖”的程序员啊。
      

  11.   

    他应该是想这样写吧 
    int i=0;
     while (length > i)
                {。。
      

  12.   

    我也觉得应该把int i=0;放到外边
      

  13.   

    肯定没用的,因为你while循环内部,每此执行时都对变量进行重新定义,先执行int i = 0了,所以永远操作的是item【0】,要想实现i++功能,就把定义放while循环外吧
      

  14.   

    这个是可以跳出循环的,因为你的length 符合要求了,i 在里面没起到做用