详解for循环(各种用法)
来源:互联网 发布:java第三方登录原理 编辑:程序博客网 时间:2024/05/21 22:34
常见的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(i = 74;i > 0;i--){ jjrounds[i] = 0x80000000;} 又弄错了,接受批评。应该换成下面的for(i = 74; 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;
}
}
看出来了,只要是表达式,就能使用啊!除了第二个表达式必须为空,或者布尔值外,其他两个基本没什么限制。第二表达式为空则是死循环。
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(i = 74;i > 0;i--){ jjrounds[i] = 0x80000000;} 又弄错了,接受批评。应该换成下面的for(i = 74; 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;
}
}
看出来了,只要是表达式,就能使用啊!除了第二个表达式必须为空,或者布尔值外,其他两个基本没什么限制。第二表达式为空则是死循环。
0 0
- 详解for循环(各种用法)
- 详解for循环(各种用法)
- 详解for循环(各种用法)
- 详解for/while循环的各种用法
- 详解Java增强的For循环(泛型) 各种用法
- 详解Java增强的For循环(泛型) 各种用法
- 详解Java增强的For循环(泛型) 各种用法
- JsRender for index循环索引用法详解
- shell中的for循环用法详解
- 详解SQL中FOR XML子句的各种用法
- 详解SQL中FOR XML子句的各种用法
- Java for循环的几种用法详解
- Java for循环的几种用法详解
- Java for循环的几种用法详解
- FOR XML 各种用法
- FOR XML 各种用法
- 增强for循环用法
- 增强for循环用法
- 哈喽,大家好,嘿嘿
- android颜色与translate,alpha动画总结
- HDU2099
- 树莓派调整SD卡的分区大小
- 计算器的制作
- 详解for循环(各种用法)
- LintCode-硬币排成线 II
- Object_c——blocks笔记整理
- java中实现多线程的方法有几种以及如何实现多线程
- PHP环境配置
- 定义基类Base
- tar.gz文件压缩解压方法
- 数据对齐 posix_memalign 函数详解
- 系统服务优化