VS 2019 中的 Action/Func 代表问题

丹尼尔·约尔丹诺夫

我试图制作一个程序,从控制台读取一系列数字,然后按排序顺序仅打印偶数。问题是,当我尝试从委托中的数组中删除一个数字时,它不起作用。我知道制作程序有很多更简单的方法,但我想了解更多关于委托和事件的信息。如果你们可以帮助我(或有任何关于该主题的信息),那将非常有帮助。谢谢!!!

我的代码:

 Func<int, bool> checkIfEven = num => num % 2 == 0;

        Action<int[]> sortArray = arr => Console.WriteLine(arr.Max() + " ");

        Func<List<int>, int> findMaxIndex = num => num.IndexOf(num.Max());    
        
        int[] numbers = Console.ReadLine().Split(" ").Select(int.Parse).Where(checkIfEven).ToArray();

        Action<List<int>> removeMax = list => list.RemoveAt(findMaxIndex(numbers.ToList()));

        while (numbers.Length>0)
        { 
            sortArray(numbers);
            removeMax(numbers.ToList());
        }

在此处输入图像描述

埃德卡

问题出在这一行:

removeMax(numbers.ToList());

此调用:数组numbers.ToList()创建一个新列表,因此当被调用时,它会从列表中删除一个元素,该元素是数组的副本,而不是数组本身,因为它可能是预期的。numbersremoveMax numbersnumbers

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章