Menu
CoddyTech

重构循环

本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 16 课,共 66 课。

重构循环可以提高代码的可读性和可维护性。

将传统循环替换为 foreach,让代码更简单:

string[] fruits = { "apple", "banana", "cherry" };

// 重构前
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine(fruits[i]);
}

// 重构后
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

将复杂的循环逻辑提取到方法中:

int[] numbers = { 1, 2, 3, 4, 5, 6 };

// 重构前
for (int i = 0; i < numbers.Length; i++)
{
    if (numbers[i] % 2 == 0)
    {
        Console.WriteLine($"{numbers[i]} is even");
    }
}

// 使用辅助方法重构后
for (int i = 0; i < numbers.Length; i++)
{
    if (IsEven(numbers[i]))
    {
        Console.WriteLine($"{numbers[i]} is even");
    }
}

// 辅助方法
bool IsEven(int number)
{
    return number % 2 == 0;
}

把大型循环拆分成更小、目标更明确的循环:

int[] data = { 1, 2, 3, 4, 5 };

// 之前:一个大循环处理多项任务
for (int i = 0; i < data.Length; i++)
{
    // 处理数据
    data[i] = data[i] * 2;
    // 打印结果
    Console.WriteLine(data[i]);
}

// 之后:拆分成用途明确的多个循环
// 处理数据
for (int i = 0; i < data.Length; i++)
{
    data[i] = data[i] * 2;
}

// 打印结果
for (int i = 0; i < data.Length; i++)
{
    Console.WriteLine(data[i]);
}
challenge icon

挑战

中等

创建一个名为 refactorArrayFilter 的方法,它需要:

  1. 接收一个整数数组作为参数
  2. 实现两种代码版本,用于统计能被 3 整除的数字:
    • 原始版本:使用传统的 for 循环和 if 语句
    • 重构版本:使用 foreach 循环,并将逻辑提取到辅助方法中
  3. 以整数形式返回重构版本统计的数量

例如,给定数组 [3, 4, 6, 7, 9],方法应返回 3,因为其中有三个数字(3、6 和 9)能被 3 整除。

注意:你不需要打印任何内容,只需以整数形式返回统计数量。

亲手试试

public class RefactorArrayFilter
{
    // 实现 refactorArrayFilter 方法
    public static int refactorArrayFilter(int[] numbers)
    {
        // 在这里编写你的代码
        
    }
    
    // 实现你需要的辅助方法
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C# 在线编译器