从数组提取偶数时遇'(int[])': not all code paths return a value'错误求助
解决C#数组提取偶数时的返回值错误
错误根源
你遇到的'(int[])': not all code paths return a value错误,是因为方法声明要返回int[]类型,但代码中存在没有返回值的分支——比如当数组里没有偶数时,你的逻辑没提供对应的返回结果,或者return语句只写在循环内部,循环结束后没有兜底的返回。
两种可行实现方案
方案1:用Linq快速实现(最简洁)
借助Linq的Where筛选偶数,再转成数组,自动覆盖所有情况:
using System.Linq; // 必须引用此命名空间 public int[] ExtractEvens(int[] arr) { return arr.Where(num => num % 2 == 0).ToArray(); }
调用示例:
int[] original = new int[] {4, 1, 2, 5, 6, 1, 3}; int[] evens = ExtractEvens(original); // evens结果为 [4, 2, 6]
方案2:手动实现(理解底层逻辑)
如果不想依赖Linq,手动遍历数组收集偶数,最后返回结果数组:
using System.Collections.Generic; // 引用List所在命名空间 public int[] ExtractEvens(int[] arr) { List<int> evenNumbers = new List<int>(); foreach (int num in arr) { if (num % 2 == 0) { evenNumbers.Add(num); } } // 即使没有偶数,也会返回空数组,不会触发错误 return evenNumbers.ToArray(); }
避免错误的关键
不管数组中有没有符合条件的偶数,方法都必须返回一个int[]类型的值——空数组也是合法的返回值,不能让任何代码分支走到没有return的情况。比如你之前尝试的return int[];是语法错误,正确的兜底返回可以是return new int[0];,或者用上面List转数组的方式。
内容的提问来源于stack exchange,提问作者SalvationCode
相关产品推荐
相关产品推荐

