熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

詳解for循環(各種用法)

2013-11-15 12:52:16  來源: ASP編程 
常見的for循環一般是一下代碼這種結構
  
  for (int i = ; i < ; i++)
  {
   ConsoleWriteLine(i);
  }
  
  
  或者遞減的
  
  
  
   for (int i = ; i > ; i)
   {
   ConsoleWriteLine(i);
   }
  
  
  
  
  但for當然不止這樣一種用法for的定義()內的三段表達式除了中間的必須產生布爾型並未對其余兩段有所限制只要是表達式就可以了在LuceneNet中就有好幾次這樣的用法例如
  
  
  
  for (Token token = inputNext(result); token != null; token = inputNext(result))
  {
   int len = tokenTermText()Length;
   if (len >= min && len <= max)
   {
   return token;
   }
  }
  
  
  這個語句和下面代碼的效果是一樣的
  
  
  
   Token token;
   while((token = inputNext(result)) != null)
   {
   int len = tokenTermText()Length;
   if (len >= min && len <= max)
   {
   return token;
   }
   }
  
  
  其實我認為在這兩種循環中第二種比第一種好理解一點
  
  
  
  還有這種
  
  
  
  for (i = ; i > ; )
   jjrounds[i] = x;
  
  
  出了一個空表達式呵呵其實理解一下也很簡單和下面代碼的效果一樣
  
  
  
  for (i = ; i > ; i)
   jjrounds[i] = x;
  
  
  朋友留言指正修正以上代碼為
  
  for(i = ;i > ;i){
  
   jjrounds[i] = x;
  
  }
  
  
  
  又弄錯了接受批評應該換成下面的
  
  for(i = ; i >= ;i)
  
   jjrounds[i] = x;
  
  
  
  空表達式也是一個表達式啊放在這裡也不犯法
  
  
  
  嘿嘿還有其他的表達式比如
  
  
  
  for (int i = ; i < length; i++ pos++)
  
  
  這個應該不難理解第三個表達式有兩個第一個當然也可以有兩個
  
  
  
  比如 for (int i = j = ; i > ; ij++)
  
  中間的表達式要想用兩個就要加運算符了for (int i = j = ; i > || j> ; ij++)
  
  
  
  這樣就總結出三種for循環樣式
  
  for(int i = ;i < ;i++) //遞減和遞加的算一種
  
  for(;true;) //有空表達式的
  
  for (int i = j = ; i > || j> ; ij++) //有多表達式的
  
  
  
  好像就這麼多了但是還有一種我無法理解的表達式
  
  for(;;)這是個 死循環 無限循環(沒有跳出語句才能成為死循環)汗!!!廬山瀑布汗啊反正我理解不了
  
  
  
  嘿嘿理解上面的表達式基本上看別人的代碼就不會摸不著頭腦了那是不是真的沒有了呢?
  
  來試試這種
  
  
  
   static void Main(string[] args)
   {
   for (Act(); ; )
   {
  
   }
   ConsoleRead();
   }
  
   static void Act()
   {
  
  
   }
  
  
  哈哈真是徹底被打敗了注意沒見過有這麼用的純粹是實驗應用產生的後果我不負責啊
  
  
  
  放上三個方法爽爽
  
  
  
   static void Main(string[] args)
   {
   for (Act(); Act(); Act())
   {
  
   }
   ConsoleRead();
   }
  
   static void Act()
   {
  
   }
  
   static bool Act()
   {
   return true;
   }
  
   static bool Act()
   {
   return true;
   }
  
  
  當然你非要用個委托我也沒意見
  
  
  
   delegate void Bind();
   class Program
   {
   static void Main(string[] args)
   {
   Bind b = new Bind(Act);
   for (b(); Act(); Act())
   {
  
   }
   ConsoleRead();
   }
  
   static void Act()
   {
  
   }
  
   static bool Act()
   {
   return true;
   }
  
   static bool Act()
   {
   return true;
   }
   }
  
  
  
  
  我考事件也出來了
  
  
  
   delegate void Bind();
   class Program
   {
   static event Bind bindEvent;
  
   static void Main(string[] args)
   {
   Bind b = new Bind(Act);
   bindEvent += new Bind(Program_bindEvent);
   for (b(); Act(); bindEvent())
   {
  
   }
   ConsoleRead();
   }
  
   static void Program_bindEvent()
   {
  
   }
  
   static void Act()
   {
  
   }
  
   static bool Act()
   {
   return true;
   }
  
   static bool Act()
   {
   return true;
   }
   }
  
  
  看出來了只要是表達式就能使用啊!除了第二個表達式必須為空或者布爾值外其他兩個基本沒什麼限制第二表達式為空則是死循環
From:http://tw.wingwit.com/Article/program/ASP/201311/21797.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.