首页 | 麦客学吧 | 视频教程 | FLASH小游戏 | 素材下载 | 常用工具
您当前的位置:首页 > 程序开发 > C# > 正文

常见for循环的各种用法

出处:麦客学吧 [2008-8-5 8:11:34] 点击数:142
常见的for循环一般是一下代码这种结构:
for (int i = 0; i < 100; i++)

{
    Console.WriteLine(i);
}

或者递减的:
     for (int i = 100; i > 0 ; i--)

     {
       Console.WriteLine(i);
      }

但for当然不止这样一种用法。for的定义,()内的三段表达式,除了中间的必须产生布尔型,并未对其余两段有所限制,只要是表达式就可以了。在Lucene.Net中就有好几次这样的用法。例如
for (Token token = input.Next(result); token != null; token = input.Next(result))

{
     int len = token.TermText().Length;
     if (len >= min && len <= max)
     {
         return token;
     }
}

这个语句和下面代码的效果是一样的:
           Token token;

            while((token = input.Next(result)) != null)
            {
                int len = token.TermText().Length;
                if (len >= min && len <= max)
                {
                    return token;
                }
            }

其实我认为在这两种循环中,第二种比第一种好理解一点。

还有这种
for (i = 75; i-- > 0; )

    jjrounds[i] = 0x80000000;

出了一个空表达式,呵呵。其实理解一下也很简单,和下面代码的效果一样:
for (i = 75; i > 0; i--)

    jjrounds[i] = 0x80000000;

空表达式,也是一个表达式啊,放在这里也不犯法。 

嘿嘿,还有其他的表达式,比如:
for (int i = 0; i < length; i++, pos++)
 
这个应该不难理解,第三个表达式有两个,第一个当然也可以有两个

比如
for (int i = 100, j = 100; i > 0 ; i--,j++)

中间的表达式要想用两个就要加运算符了for (int i = 100, j = 100; i > 0 || j>0 ; i--,j++) 

这样就总结出三种for循环样式

1、for(int i = 0;i < 100;i++)  //递减和递加的算一种

2、for(;true;)     //有空表达式的

3、for (int i = 100, j = 100; i > 0 || j>0 ; i--,j++)   //有多表达式的 

好像就这么多了。但是还有一种,我无法理解的表达式

for(;;)这是个死循环,汗!!!庐山瀑布汗啊,反正我理解不了。 

嘿嘿,理解上面的表达式,基本上看别人的代码就不会摸不着头脑了。那是不是真的没有了呢?

来试试这种
        static void Main(string[] args)

        {
            for (Act(); ; )
            {

            }
            Console.Read();
        }

        static void Act()
        {


        }


哈哈,真是彻底被打败了。注意:没见过有这么用的,纯粹是实验,应用产生的后果我不负责啊。 

放上三个方法爽爽:
        static void Main(string[] args)

        {
            for (Act1(); Act2(); Act3())
            {

            }
            Console.Read();
        }

        static void Act1()
        {

        }

        static bool Act2()
        {
            return true;
        }

        static bool Act3()
        {
            return true;
        }

当然,你非要用个委托,我也没意见:
    delegate void Bind();

    class Program
    {
        static void Main(string[] args)
        {
            Bind b = new Bind(Act1);
            for (b(); Act2(); Act3())
            {

            }
            Console.Read();
        }

        static void Act1()
        {

        }

        static bool Act2()
        {
            return true;
        }

        static bool Act3()
        {
            return true;
        }
    }

我考事件也出来了:
    delegate void Bind();

    class Program
    {
        static event Bind bindEvent;

        static void Main(string[] args)
        {
            Bind b = new Bind(Act1);
            bindEvent += new Bind(Program_bindEvent);
            for (b(); Act2(); bindEvent())
            {

            }
            Console.Read();
        }

        static void Program_bindEvent()
        {
           
        }

        static void Act1()
        {

        }

        static bool Act2()
        {
            return true;
        }

        static bool Act3()
        {
            return true;
        }
    }

看出来了,只要是表达式,就能使用啊!除了第二个表达式必须为空,或者布尔值外,其他两个基本没什么限制。第二表达式为空则是死循环。

嘿嘿,无聊整出来的,欢迎大家拍砖!知道其他用法的朋友分享一下。

【责任编辑: lanier

关于 常见for循环的各种用法 的相关文章
昵 称:麦客网友[游客]  如果您不想匿名评论请先登录注册
评 论:请自觉遵守互联网相关政策法规,管理员有权删除恶意评论、广告和违禁词语。

验证码: 验证码,看不清楚?请点击刷新验证码    
麦客酷站赏析频道

精彩图文推荐

关于本站 - 联系站长 - 广告服务 - 合作伙伴 - 网站地图 - 版权声明 - 报告错误 - 收藏本站 | Http://www.MaiCoo.com

Copyright © 2005 - 2008 MaiCoo.com All Rights Reserved

违法和不良信息举报中心 本站服务器空间和带宽由雷克斯网络提供赞助
浙ICP备06017818号