使用空条件布尔?在 if 语句中[重复]

2024-01-02

为什么这段代码有效:

if (list?.Any() == true)

但这段代码没有:

if (list?.Any())

saying 错误 CS0266 无法隐式转换类型“bool?” '布尔'

那么为什么它不是一个语言特性在中进行这样的隐式转换呢?if陈述?


An if https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/if-else语句将评估Boolean https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/bool表达。

bool someBoolean = true;

if (someBoolean)
{
    // Do stuff.
}

Because if陈述评估Boolean表达式,您试图做的是隐式转换Nullable<bool>. https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/ to bool.

bool someBoolean;
IEnumerable<int> someList = null;

// Cannot implicity convert type 'bool?' to 'bool'.
someBoolean = someList?.Any();

Nullable<T>确实提供了GetValueOrDefault https://msdn.microsoft.com/en-us/library/72cec0e0(v=vs.110).aspx可以用来避免真假比较的方法。但我认为你的原始代码更干净。

if ((list?.Any()).GetValueOrDefault())

可能对您有吸引力的另一种选择是创建您自己的扩展方法。

public static bool AnyOrDefault<T>(this IEnumerable<T> source, bool defaultValue)
{
    if (source == null)
        return defaultValue;

    return source.Any();
}

Usage

if (list.AnyOrDefault(false))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用空条件布尔?在 if 语句中[重复] 的相关文章

随机推荐

  • 这段代码是否通用,或者只是我的系统?

    include
  • 在 Intranet 上使用 Nuget

    我认为 NuGet 是依赖管理的好主意 我想尝试为我的团队使用它来管理依赖项 问题是我们位于内联网上并且没有连接到互联网 理想情况下 我希望能够在本地镜像官方 NuGet feed 并用我们内部提供的本地包 feed 对其进行补充 任何人都
  • 解析 Objective-C printf 格式字符串?

    我想获取某个范围内的成员范围NSString建有 NSString stringWithFormat 解析 Objective C 格式字符串的最佳方法是什么 我不能只使用 C 格式字符串解析器 因为 我还需要确保它支持格式排序 1 d 2
  • 书签功能作为侧边栏打开

    您好 我在我的网站中实现了书签功能 但是当我单击工具栏上的书签链接时 它会在侧边栏中打开一个新窗口 而不是在 mozilla firefox 中打开一个新页面 它在 IE 中工作正常 任何人都可以帮助我吗 AFAIK 您无法更改脚本的行为
  • 导入 typescript 时未找到该相关模块

    先发制人注意事项 Stackoverflow 上有大量 未找到相关模块 的问题 我已经浏览了尽可能多的内容 但它们并不重复 请不要将此标记为重复项 我有一个 Vue 项目设置为vue create使用 Babel 和 Typescript
  • 在Python3.5+中制作列表浅拷贝的最快方法是什么?

    有几种选择可以制作shallow的副本list在 Python 3 5 中 显而易见的是 some list copy some list list some list some list 和别的 哪种方法最快 NOTE 虽然这个问题与 列
  • 迭代嵌套的 JavaScript 对象[重复]

    这个问题在这里已经有答案了 我正在尝试迭代嵌套对象以检索由字符串标识的特定对象 在下面的示例对象中 标识符字符串是 label 属性 我无法理解如何向下迭代树以返回适当的对象 任何帮助或建议将不胜感激 var cars label Auto
  • Android L 5.0 和 libusb 1.0.9 - 没有权限?

    我目前有一个 Android 应用程序通过 USB OTG 连接到设备 通信是使用 libusb 1 0 9 完成的 对于 api 级别 type 1400 audit 0 0 107 avc denied read for name us
  • Bitbucket 克隆:端口号以“T”结尾

    我尝试使用 jenkins 执行 shell 而不是 git 插件 克隆 镜像 我的 bitbucket 存储库 我的凭据 username passwd 保存在变量中 myuser凭证是正确的 我们用了这个插件 https wiki je
  • Redux 存储更新成功,但组件的 mapStateToProps 接收旧状态

    不知道是什么问题 我已经尝试了一切 这个问题最接近我的问题 但对我没有帮助https github com reduxjs redux issues 585 https github com reduxjs redux issues 585
  • 使用 Angular 2 的 Strope XMPP

    我想在 angular2 项目中为 Strope JS XMPP 库创建服务 该服务负责打开和关闭连接并包括接收消息的处理程序 我能够在 Net MVC 项目中执行此操作 但我没有找到在 Angular2 框架中实现的方法 谢谢 桑吉耶夫
  • 类库中的 ASP.NET Core DI?

    我有一个 ASP NET Core 2 1 项目 它引用典型的 NET Core 类库的 数据访问层 项目 数据访问层需要来自 ASP NET Core 项目中的 appsettings json 的连接字符串 我创建了一个像这样的简单容器
  • 当任何数学运算在 .net 4 中产生“NaN”时,如何强制 C# 编译器抛出异常?

    我有一个很长的复杂源代码 我需要找到变量值设置为 nan 的确切位置 所以我需要编译器在此时抛出异常 这个问题之前已经被问过 我发现以下答案是一个很好的答案 此代码在 net 3 5 中运行良好 但是当我使用 net 4 时 此解决方案无法
  • 如何使用 PowerShell 检查远程计算机上是否正在运行特定服务

    我有 3 台服务器 运行 3 个服务 SERVER A正在运行serv1 exe服务 SERVER B 正在运行serv2 exe服务 SERVER C 运行serv3 exe服务 使用 PowerShell 如何查询每个服务以检查它们是否
  • 如何在 Android 中创建 POS 打印机尺寸的账单?

    我使用 iText 创建了账单的 pdf 文件 我想用 POS 打印机打印这张账单 POS 打印机纸张尺寸为 58 毫米 我的 PDF 看起来像 A4 大小 如何根据 POS 打印机尺寸调整此页面的大小 而且 如果产品数量超过 100 个
  • 找到 R 中每个组的 75 个百分位数并用中位数替换

    这些问题与我自己的主题类似计算 90 百分位并将其替换为 R 中各组的中位数 https stackoverflow com questions 51929941 calculation of 90 percentile and repla
  • 为什么 onPostExecute 在 AsyncTask 中的 doInBackground 完成之前执行

    我试图创建一个 AsyncTask 从服务器端获取一些数据 但它在 IOUtils copy response getEntity getContent writer 行的 onPostExecute 中报告空指针异常我使用一些日志来查看发
  • 我们可以从 Android 应用程序连接到 sql server 吗?

    我正在开发一个与网站关联的应用程序 我的应用程序主屏幕包含登录和注册按钮 在用户注册时 所有字段值都必须存储在SQL Server 中 是否可以从移动 Android 应用程序连接到 SQL Server 如果是这样怎么办 在您的网站上 我
  • 将字符串转换为 System.IO.Stream [重复]

    这个问题在这里已经有答案了 我需要将 String 转换为 System IO Stream 类型以传递给另一个方法 我尝试了这个但没有成功 Stream stream new StringReader contents 尝试这个 conv
  • 使用空条件布尔?在 if 语句中[重复]

    这个问题在这里已经有答案了 为什么这段代码有效 if list Any true 但这段代码没有 if list Any saying 错误 CS0266 无法隐式转换类型 bool 布尔 那么为什么它不是一个语言特性在中进行这样的隐式转换