gpt4 book ai didi

c# - 如何将 'out' 参数传递给 lambda 表达式

转载 作者:可可西里 更新时间:2023-11-01 08:15:23 26 4
gpt4 key购买 nike

我有一个具有以下签名的方法:

private PropertyInfo getPropertyForDBField(string dbField, out string prettyName)

在其中,我根据给定的 dbField 找到关联值 prettyName。然后我想找到名称为 prettyName 的所有属性(如果有的话),因此我尝试执行以下操作:

IEnumerable<PropertyInfo> matchingProperties =
getLocalProperties().Where(prop =>
prop.Name.Equals(prettyName)
);

但是,这会产生以下错误:

Cannot use ref or out parameter 'prettyName' inside an anonymous method, lambda expression, or query expression

在方法中我尝试在 Where lambda 参数中使用 prettyName 时,prettyName 肯定已初始化。如果 prettyName 无法初始化为有效值,我将返回。我可以在这里做一些技巧让我在 lambda 表达式中使用 prettyName 吗?

编辑:如果重要的话,我正在使用 .NET 3.5。

最佳答案

只是为了澄清。可以在 lambda 中使用被调用方法的 ref/out 参数。

如果指定参数类型,也可以使用 ref 或 out。这意味着将 prettyName 作为参数发送给 lambda。

(prop, ref string prettyName) => prop.Name.Equals(prettyName);

Where 子句只接受一个参数,即列表中的属性元素。这就是阻止您向 lambda 添加参数的原因。

不想给人们留下不能在 lambda 中使用这些参数的错误印象。您只是不能通过捕获来使用它们。

关于c# - 如何将 'out' 参数传递给 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4045792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com