C# 在不使用Linq更改的情况下获取相同的元素

C# 在不使用Linq更改的情况下获取相同的元素,c#,.net,linq,collections,C#,.net,Linq,Collections,我有这样一种方法: public List<Fruit> Traverse (IEnumerable<Fruit> collection, Action<Fruit> action) 我如何调用该操作以获得相同的元素 Traverse (array, f => f); C#编译器不允许我这样做 编辑: 列表结果=。。。 foreach(收集水果) { 结果:添加(水果); 行动(水果); } 方法签名是固定的,所以我不能通过仅仅使用一个动作获得任何

我有这样一种方法:

public List<Fruit> Traverse (IEnumerable<Fruit> collection, Action<Fruit> action)
我如何调用该操作以获得相同的元素

Traverse (array, f => f);
C#编译器不允许我这样做

编辑:

列表结果=。。。
foreach(收集水果)
{
结果:添加(水果);
行动(水果);
}

方法签名是固定的,所以我不能通过仅仅使用一个动作获得任何其他东西,对吗?但是我需要的是传递一个什么都不做的操作,这样我就得到了整个结果列表。

操作不是一个什么都不返回的委托吗?那么:

Traverse(array, e => {});

操作不是一个不返回任何内容的委托吗?那么:

Traverse(array, e => {});

您的方法声明似乎不正确

如果您有:

public List<string> Traverse (IEnumerable<string> collection, Action<string> action)
这需要每个元素都支持一个“Text”属性。字符串没有文本属性

如果您传递了一个
IEnumerable
,则
e=>e
将计算为
Func
。您正在返回字符串本身


如果要执行
操作
,则需要对不返回值(e)的字符串执行某些操作。

您的方法声明似乎不正确

如果您有:

public List<string> Traverse (IEnumerable<string> collection, Action<string> action)
这需要每个元素都支持一个“Text”属性。字符串没有文本属性

如果您传递了一个
IEnumerable
,则
e=>e
将计算为
Func
。您正在返回字符串本身


如果要执行
操作
,则需要对不返回值(e)的字符串执行某些操作。

您的遍历方法设置错误。您需要在此处使用通用签名和
Func
返回

public List<T> Traverse (IEnumerable<T> collection, Func<T,T> del)
公共列表遍历(IEnumerable集合,Func del)

您的遍历方法设置错误。您需要在此处使用通用签名和
Func
返回

public List<T> Traverse (IEnumerable<T> collection, Func<T,T> del)
公共列表遍历(IEnumerable集合,Func del)
操作
接受字符串参数,但不返回任何内容,类似于带有签名的方法
void Foo(字符串栏)

如果使用动作参数填充返回值,则需要将动作替换为
Func
,该函数接受字符串参数并返回字符串,类似于带有签名的函数
string Foo(字符串栏)

动作
接受字符串参数但不返回任何内容,类似于带有签名的方法
voidfoo(字符串条)



如果使用动作参数填充返回值,则需要将动作替换为
Func
,该函数采用字符串参数并返回字符串,类似于带有签名的函数
string Foo(字符串栏)

,语法错误是什么?可能会有帮助。建议:如果涉及到编译器错误,那么将其包括在内会有帮助。很抱歉,它说:“错误1只能将赋值、调用、增量、减量和新对象表达式用作语句”您确定第一个编译了吗?这不是在尝试获取System.String的Text属性吗?那是什么?我不明白你第一次是怎么做的。字符串没有.Text属性。是否确实正确复制和粘贴了代码?语法错误是什么?可能会有帮助。建议:如果涉及到编译器错误,那么将其包括在内会有帮助。很抱歉,它说:“错误1只能将赋值、调用、增量、减量和新对象表达式用作语句”您确定第一个编译了吗?这不是在尝试获取System.String的Text属性吗?那是什么?我不明白你第一次是怎么做的。字符串没有.Text属性。你确定你复制并粘贴了正确的代码吗?琼,你说“行得通”表明你一开始就做错了。听起来您需要的是成员访问表达式,而不是操作。正如JaredPar所说。我也认为我没有正确解释这个问题,但现在更新了。这是正确的答案,因为我们有了正确的问题:)Joan,你说“那行得通”表明你一开始就做错了。听起来您需要的是成员访问表达式,而不是操作。正如JaredPar所说。我也不认为我正确地解释了这个问题,但现在更新了。这是正确的答案,因为我们有了正确的问题:)谢谢Jared。为什么错了?我可以使用泛型,但遍历方法有特殊的水果对象遍历。Func和Action有什么区别?哪个更好?Func返回一个值。Action只是对传入的对象执行一个“Action”。如果要从委托返回,则需要Func。如果代理仅对每个元素执行“操作”,请使用ActionJared。为什么错了?我可以使用泛型,但遍历方法有特殊的水果对象遍历。Func和Action有什么区别?哪个更好?Func返回一个值。Action只是对传入的对象执行一个“Action”。如果要从委托返回,则需要Func。如果代理只是对每个元素执行一个“操作”,请使用action我想我遗漏了一些东西。我真的想得到结果列表(添加了更多代码),我可以用动作来完成吗?同样,当你说e=>e时,它返回字符串本身,但是你在方法内部收集Func的结果,对吗?我直接收集被遍历的对象,而不是动作。所以我想上面的代码可能写得更好。你能告诉我在这种情况下我是否应该使用Func吗?如果是的话,你能用Func来写吗?这样我就能看出区别了。我想我遗漏了一些东西。我真的想得到结果列表(添加了更多代码),我可以用动作来完成吗?同样,当你说e=>e时,它返回字符串本身,但是你在方法内部收集Func的结果,对吗?我直接收集遍历的对象,而不是