我正在学习c#,遇到一个问题,试图在List上使用foreach循环。它一直说“项目”不存在。这是代码:
static int SumOf(List<int> nums)
{
int total = 0;
List<int> theList = new List<int>(nums);
theList.ForEach(int item in theList){
if (item % 2 == 0)
{
total += item;
}
}
return total;
}
foreach方法应该遍历列表并将偶数加到总数中。
答案 0 :(得分:4)
您使用的ForEach
是采用List
的{{1}}方法。
我认为您想要的是使用Action
关键字的foreach
循环
foreach
当然,如果您想以foreach (int item in theList)
{
if (item % 2 == 0)
{
total += item;
}
}
的方式这样做,那么:
ForEach
theList.ForEach((item) =>
{
if (item % 2 == 0)
{
total += item;
}
});
方法采用的ForEach
(接收一个整数)=>(如果是偶数,则加到总数中)
并在列表的每个元素上调用此Action
,因此最终结果应与使用Action
循环相同。
由于您正在学习C#,所以我认为本文是关于Actions的不错的阅读。
https://docs.microsoft.com/en-us/dotnet/api/system.action?view=netframework-4.8
这是ForEach的文档。
答案 1 :(得分:0)
如果要使用扩展方法ForEach,则需要使用Action,因此您可以直接访问以下列表项:
foreach
或者您可以如下使用foreach(var item in theList)
{
if (item % 2 == 0)
{
total += item;
}
}
在列表项中循环:
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
SET TERMOUT OFF
SET LINESIZE 2000
SET PAGESIZE 50000
SET SQLFORMAT ANSICONSOLE
答案 2 :(得分:0)
foreach(type variableName in IEnumerable<T>)
和List<T>.ForEach(Action<T>)
是不同的。
第一个是循环任何IEnumerable<T>
实例(包括List<T>
)的C#语法,第二个是List<T>
的方法。
循环列表,您可以
static int SumOf(List<int> nums)
{
nums = nums ?? throw new ArgumentNullException(nameof(nums)); // C# 7 syntax for check the nums is null
int total = 0;
foreach(var item in nums)
{
total += item;
}
return toal;
}
或
static int SumOf(List<int> nums)
{
nums = nums ?? throw new ArgumentNullException(nameof(nums)); // C# 7 syntax for check the nums is null
int total = 0;
nums.ForEach(item=>total += item;)
return toal;
}
或使用Linq
扩展名方法
using System.Linq;
static int SumOf(List<int> nums)
{
nums = nums ?? throw new ArgumentNullException(nameof(nums)); // C# 7 syntax for check the nums is null
return nums.Sum()
}