For循环和Foreach循环的区别
For循环:
for循环可以改变初始化,控制条件以及增量。
for (init; condition; increment)
{
statement(s);
}
init为初始化,运行for循环时只在开始的时候运行一遍。初始化可以是多个,也可以是空,一般省略时是在for循环之前初始化了控制变量,但是必须有分号。
condition为控制条件,每次循环都要判断一遍条件是否满足,如果满足,继续执行循环,否则跳出循环。控制变量也可省略,省略时将进行无限循环,一般搭配break使用。但控制条件只能有一个。increment为增量,每次循环结束都执行一次,然后再进行判断,可以省略,也可以多个。
Foreach循环:
foreach也称为只读循环,所以在循环数组/集合的时候,无法对数组/集合进行修改。foreach循环一般用来数组或集合的迭代,将循环的结果依次赋值给变量,直至遍历完整个数组
对比For循环与Foreach循环:
1.foreach循环的优势
(1)foreach语句简洁。
(2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)。
(3)不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0)。
(4)处理多维数组(不包括锯齿数组)更加的方便,如果要处理锯齿数组,则需要循环两次。
(5)在类型转换方面foreach不用显示地进行类型转换
(6)当集合元素如List<T>等在使用foreach进行循环时,每循环完一个元素,就会释放对应的资源。
Foreach循环的劣势:
(1)上面说了foreach循环的时候会释放使用完的资源,所以会造成额外的gc开销,所以使用的时候,请酌情考虑。
(2)foreach也称为只读循环,所以再循环数组/集合的时候,无法对数组/集合进行修改。
(3)数组中的每一项必须与其他的项类型相等。