For-each 循环变量

发布于 2024-11-06 03:16:00 字数 218 浏览 0 评论 0原文

下面的代码中 ob 意味着什么 - 这与 item 相同吗?

foreach (var item in allItems)
{
    if (excludeItems.Exists(ob => ob.Equals(item)))
    {
        Console.WriteLine("Item {0} excluded",item);
    }
}

What does ob means in following code - is this same as item?

foreach (var item in allItems)
{
    if (excludeItems.Exists(ob => ob.Equals(item)))
    {
        Console.WriteLine("Item {0} excluded",item);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

﹎☆浅夏丿初晴 2024-11-13 03:16:00

oblambda 表达式 的参数。因此,如果您熟悉匿名方法,就像:

foreach (var item in allItems)
{
    if (excludeItems.Exists(delegate (string ob) { return ob.Equals(item); })
    {
        Console.WriteLine("Item {0} excluded",item);
    }
}

假设 ob 的类型应该是 string - 它很可能不是。由于泛型类型推断,这将取决于 excludeItems

Lambda 表达式可以更明确,因此可以写为:

if (excludeItems.Exists((string ob) => { return ob.Equals(item); })

或者

if (excludeItems.Exists((string ob) => ob.Equals(item))

基本上,对于可以推断类型的单个参数的常见情况,Lambda 表达式中有一些小快捷方式,并且返回值一个单一的表达。

现在,在这种特殊情况下,将从 lambda 表达式创建的委托将为 excludeItems 中的每个元素(在 foreach 循环的每次迭代中)和 ob 调用一次。 将具有该元素的值,直到找到等于 item 的值(或用完所有元素)。

ob is the parameter to the lambda expression. So if you're familiar with anonymous methods, it's like:

foreach (var item in allItems)
{
    if (excludeItems.Exists(delegate (string ob) { return ob.Equals(item); })
    {
        Console.WriteLine("Item {0} excluded",item);
    }
}

That's assuming the type of ob should be string - it may well not be. That will depend of excludeItems, due to generic type inference.

Lambda expressions can be more explicit, so this could be written as:

if (excludeItems.Exists((string ob) => { return ob.Equals(item); })

or

if (excludeItems.Exists((string ob) => ob.Equals(item))

Basically there are several little shortcuts in lambda expressions for the common case of a single parameter whose type can be inferred, and a return value from a single expression.

Now in this particular case, the delegate created from the lambda expression will be called once for each element in excludeItems (in each iteration of the foreach loop) and ob will have the value of that element, until it finds a value equal to item (or runs out of elements).

自由范儿 2024-11-13 03:16:00

ob 表示 exceptItems 中的项目

ob means an item in excludeItems

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文