C# 循环
循环是编程中的重要概念之一,它可以帮助我们重复执行相同的代码块。在 C# 中,我们有几种循环结构可以使用,包括 for 循环、while 循环和 do-while 循环。
# for 循环
for 循环是一种常用的循环结构,它可以指定循环变量的初始值、终止条件和每次迭代后的操作。下面是一个 for 循环的示例:
for (int i = 0; i < 10; i++)
{
Console.WriteLine("当前数字为:" + i);
}
在这个示例中,我们初始化循环变量 i 为 0,然后指定循环条件为 i < 10,每次迭代后 i 的值增加 1。循环体内的代码将被执行 10 次,输出当前数字的值。
# while 循环
while 循环是另一种常用的循环结构,它可以在满足条件的情况下重复执行相同的代码块。下面是一个 while 循环的示例:
int j = 0;
while (j < 10)
{
Console.WriteLine("当前数字为:" + j);
j++;
}
在这个示例中,我们初始化循环变量 j 为 0,然后指定循环条件为 j < 10。循环体内的代码将被执行 10 次,输出当前数字的值。
# do-while 循环
do-while 循环是一种与 while 循环类似的循环结构,不同的是它会先执行一次循环体内的代码,然后再判断循环条件是否满足。下面是一个 do-while 循环的示例:
int k = 0;
do
{
Console.WriteLine("当前数字为:" + k);
k++;
} while (k < 10);
在这个示例中,我们初始化循环变量 k 为 0,然后执行一次循环体内的代码,输出当前数字的值。之后判断循环条件是否满足,如果满足则继续执行循环体内的代码,直到循环条件不满足为止。
以上就是 C# 中常用的循环结构及其示例代码。需要注意的是,在使用循环结构时一定要注意循环变量的初始值、终止条件和每次迭代后的操作,否则可能会导致死循环或者无限循环的情况发生。
# foreach 循环
foreach 循环用于遍历一个集合或数组中的所有元素。下面是一个 foreach 循环的示例:
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int num in numbers)
{
Console.WriteLine("当前数字为:" + num);
}
在这个示例中,我们定义了一个整型数组 numbers,并初始化了其中的元素。然后使用 foreach 循环遍历数组中的所有元素,每次迭代后输出当前数字的值。
# for 循环的扩展语法
for 循环的扩展语法可以让我们更方便地遍历一个集合或数组中的所有元素。下面是一个 for 循环的扩展语法的示例:
int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine("当前数字为:" + numbers[i]);
}
在这个示例中,我们定义了一个整型数组 numbers,并初始化了其中的元素。然后使用 for 循环的扩展语法遍历数组中的所有元素,每次迭代后输出当前数字的值。
需要注意的是,使用 foreach 循环和 for 循环的扩展语法遍历一个集合或数组时,必须保证该集合或数组是可迭代的,即实现了 IEnumerable
接口或其泛型版本 IEnumerable<T>
接口。
以上就是 C# 中常用的循环结构及其高级用法。需要注意的是,在使用高级循环结构时也要注意循环变量的初始值、终止条件和每次迭代后的操作,否则同样可能会导致死循环或者无限循环的情况发生。
# foreach 循环的 LINQ 版本
foreach 循环的 LINQ 版本可以让我们更方便地筛选集合或数组中的元素。下面是一个 foreach 循环的 LINQ 版本的示例:
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int num in numbers.Where(n => n % 2 == 0))
{
Console.WriteLine("当前偶数为:" + num);
}
在这个示例中,我们定义了一个整型数组 numbers,并初始化了其中的元素。然后使用 foreach 循环的 LINQ 版本筛选出其中的偶数,每次迭代后输出当前偶数的值。
需要注意的是,使用 foreach 循环的 LINQ 版本时必须引入 System.Linq 命名空间,并使用 Where 扩展方法进行筛选。
# while 循环的 lock 版本
while 循环的 lock 版本可以让我们更方便地实现线程同步。下面是一个 while 循环的 lock 版本的示例:
object lockObj = new object();
int count = 0;
while (true)
{
lock (lockObj)
{
if (count >= 10)
{
break;
}
Console.WriteLine("当前计数为:" + count);
count++;
}
}
在这个示例中,我们定义了一个锁对象 lockObj 和一个计数器 count。然后使用 while 循环的 lock 版本实现了线程同步,每次迭代时都会获取锁对象 lockObj,然后判断计数器 count 是否大于等于 10,如果是则退出循环,否则输出当前计数的值并将计数器加 1。
需要注意的是,使用 while 循环的 lock 版本时必须保证锁对象的可见性,并使用 lock 关键字对临界区进行保护。
以上就是 C# 中特殊的循环结构及其用法。需要注意的是,在使用特殊循环结构时也要注意循环变量的初始值、终止条件和每次迭代后的操作,以及特殊循环结构的语法和用法。