新疆軟件開發

本站首頁 軟件開發 成功案例 公司新聞 公司簡介 客服中心 軟件技術 網站建設
  您現在的位置: 新疆二域軟件開發公司 >> 開發語言 >> 文章正文

各種FOR循環結構的整理

   在網上看到這篇關于for循環文章,介紹給大家看看:
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;
        }
    }
 
    看出來了,只要是表達式,就能使用啊!除了第二個表達式必須為空,或者布爾值外,其他兩個基本沒什么限制。第二表達式為空則是死循環。

作者:未知 | 文章來源:未知 | 更新時間:2008-8-5 8:52:45

  • 上一篇文章:

  • 下一篇文章:

  • 相關文章:
    沒有相關文章
    軟件技術
    · 開發語言
    · Java技術
    · .Net技術
    · 數據庫開發
    最新文章  
    ·搜集整理的asp.net的驗證方
    ·各種FOR循環結構的整理
    ·軟件項目開發中應該考慮那
    ·搜集整理的javascript sel
    ·軟件開發中項目經理有那些
    ·學習如何在Lambda表達式進
    ·C++基礎知識:結構體數據的
    ·C#實現短信發送程序的例子
    ·sun最近修補了一部分java的
    ·rss定制的另外一種實現方式
    ·delphi實現利用arp欺騙來實
    ·基礎學習:基于WF的流程框
    ·網絡編程中怎樣得知一次數
    ·如何逆序輸出單鏈表?
    ·軟件開發過程中的性能設計
    關于我們 | 軟件開發 | 下載試用 | 客服中心 | 聯系我們 | 友情鏈接 | 網站地圖 | 新疆電子地圖 | RSS訂閱
    版權所有 © 2016 新疆二域軟件開發網 www.k8w.net All Rights Reserved 新ICP備14003571號
    新疆軟件開發總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯大廈A-5C 郵編:830000
     
    平码爱码论坛