int macNumber = macNumber2 - macNumber1 - 1; //此处macNumber=2;            for (a = 9; a <= number; a++)      
              {
                if (0 == macNumber--)
                {
                    break; //执行2次后,便退出for循环,当然也不执行else,但是为什么还执行呢?
                }
                else
                {
                    ptr = Marshal.ReadIntPtr(p, a * Marshal.SizeOf(ptr));
                    sss[a] = Marshal.PtrToStringAnsi(ptr);
                    msg += sss[a] + "\r\n";
                }
            }

解决方案 »

  1.   

    在执行for之前,你的number是多少啊?
      

  2.   

                    if (0 == macNumber--)//第一次执行到这一句时,macNumber自减后是1啊,当然要执行后面的else了。。
                    {
                        break; //执行2次后,便退出for循环,当然也不执行else,但是为什么还执行呢?
                    }
      

  3.   

    一直退不出,直到最后number结束,number是20,也就是执行了11次。
      

  4.   

    那是不是判断条件 if (0 == macNumber--)写法有问题。 不是很清楚。
      

  5.   


    执行了两次else语句后,就会退出了。。除非你else语句里头用了递归的方法。
      

  6.   

    第3次的时候就到break了。不会错的!