首页 > 解决方案 > 在 C# Linq 查询中丢弃

问题描述

我想知道根据https://docs.microsoft.com/en-us/dotnet/csharp/discards在 Linq 查询中使用 Discards 的好模式,例如:

public bool HasRedProduct => Products.Any(_=>_.IsRed == true);

什么是优点/缺点而不是使用

public bool HasRedProduct => Products.Any(x=>x.IsRed == true);

标签: c#linqc#-7.0

解决方案


这不是丢弃 - 它是一个名为 的 lambda 表达式参数_。它属于文章后面的注释:

请注意,这_也是一个有效的标识符。在支持的上下文之外使用时,_不会将其视为丢弃,而是视为有效变量。

您可以判断它不是丢弃,因为它的值没有被丢弃- 您在 lambda 表达式的其余部分中使用它。当您使用该值时,我强烈反对将其_用作 lambda 表达式参数名称。但是,当您丢弃它时,可以将其用作参数名称,即使从语言角度来看它在技术上不是丢弃。选择这个名称来表示丢弃正是因为它已经在实践中使用了。__


推荐阅读