能否用switch简化多数组打印逻辑?C#技术咨询
当然可行!这是非常典型的代码优化场景
你完全可以通过提取公共逻辑的方式,用单个foreach循环替代重复的代码块,后续新增数组时只需要扩展switch分支即可,维护起来会轻松很多。
优化思路
核心是先通过switch语句确定要操作的目标数组,把它赋值给一个统一的变量,然后将排序、打印这些重复逻辑抽离出来,只执行一次。
优化后的代码示例
// 先声明一个变量存储选中的目标数组 double[] targetArray = null; switch (arraychoice.Key) { case ConsoleKey.A: targetArray = dataset.Num128_change; break; case ConsoleKey.B: targetArray = dataset.Num256_change; // 示例:新增的数组 break; case ConsoleKey.C: targetArray = dataset.Num512_change; // 后续新增数组直接加case即可 break; default: Console.WriteLine("无效的选择,请重新输入"); return; // 或者其他默认处理逻辑 } // 统一执行公共逻辑:清屏、排序、遍历打印 Console.Clear(); bubblesort.Bubblesort(targetArray); foreach (double item in targetArray) { Console.WriteLine(item); } Console.ReadKey();
为什么这样更好?
- 消除重复代码:排序、打印逻辑只写一次,避免多个foreach循环的冗余
- 扩展性更强:后续新增数组时,只需要在switch里加一个case给
targetArray赋值,不需要重复编写遍历和排序代码 - 维护成本更低:如果以后需要修改打印格式或者排序逻辑,只需要修改一处代码即可
如果你的数组类型不是double[],而是更通用的可枚举类型,可以把targetArray声明为IEnumerable<double>,适配更多场景。
内容的提问来源于stack exchange,提问作者user9090260
相关产品推荐
相关产品推荐

