双问号('??')与 if 分配相同的变量时

2024-01-11

参考以下内容SE答案 https://stackoverflow.com/a/446839/799379.

写作时

A = A ?? B;

它是一样的

if( null != A )
    A = A;
else
    A = B;

这是否意味着

if( null == A ) A = B;

会是首选,性能方面?

或者我可以假设当相同的对象位于??符号?


不用担心性能,它可以忽略不计。

如果您对此感到好奇,请编写一些代码来测试性能Stopwatch看看吧。我怀疑你需要进行几百万次迭代才能开始看到差异。

您也永远不能假设事物的实现,它们将来可能会发生变化 - 使您的假设无效。

我的假设是性能差异可能非常非常小。我个人会选择空合并运算符以提高可读性,它很好且简洁,并且足够好地传达了要点。我有时这样做是为了延迟加载检查:

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

双问号('??')与 if 分配相同的变量时 的相关文章

随机推荐

  • PHP 正则表达式:找不到结束分隔符“^”

    我在使用正则表达式时遇到了一些麻烦 这是我的代码 pattern 0 9 if preg match pattern input echo yes else echo nope 我运行它并得到 警告 preg match function
  • 正则表达式检查 Facebook 视频 URL

    我尝试使用正则表达式检查 Facebook 视频网址 这是有效的 Facebook 视频 URL 示例 https www facebook com video php v 100000000000000 https www faceboo
  • Spark中高效计算top-k元素

    我有一个类似于以下内容的数据框 key thing value u1 foo 1 u1 foo 2 u1 bar 10 u2 foo 10 u2 foo 2 u2 bar 10 并希望得到以下结果 key thing sum value r
  • Chrome 版本 44 在 selenium 测试中存在一些问题

    我正在使用 Selenium 和 Chrome 编写一个测试 昨天当我的 Chrome 从 43 更新到 44 时 我的测试遇到了一些关于 action sendkey arrow down 等的问题 我尝试卸载 Chrome 并安装 Ch
  • MySQL:一位的最小数据类型

    我想在表中添加一列 其中包含两个值 1 或 0 MySQL 中存储数据的最小数据类型是什么 A TINYINT 1 可以包含之间的数字 127 to 127 您可以使用位 1 http dev mysql com doc refman 5
  • 在 gradle.build 中使用 fatjar 插件时如何指定主类

    我有兴趣在单个可执行 jar 文件中构建一个包含所有模块依赖项和外部 jar 的单个 jar 我将能够使用该文件运行java jar myApp jar 我有模块 A 它依赖于模块 B 目前我正在使用 gradle 我的build grad
  • 如何以特定于区域设置的方式格式化不完整的日期和时间

    如何以特定于区域设置的方式格式化不完整的日期和 或时间 我有一个日期 时间存储在一组 7 个字符串中 dayOfWeek 一周中的哪一天 1 7 dayOfMonth 该月的哪一天 1 31 monthOfYear 一年中的月份 0 11
  • CSS焦点子元素改变父元素

    我想设计一个在表单字段内具有标签和输入的表单 当我在输入内写入内容 可能带有焦点 时 我希望边框亮起一些蓝色 现在我有这样的东西 HTML div class login form field div
  • removeFrom* 不起作用并且没有错误

    我有一个我认为很简单的问题 但无法解决 由于某种原因 我有一个使用removeFrom save 的控制器 它不会抛出任何错误 但不会执行任何操作 跑步 Grails 1 2 Linux Ubuntu 删除以下应用程序以重现该问题 我通过
  • 如何弹出 Outlook 提醒并保持在其他窗口之上

    如何制作 Outlook 提醒弹出窗口并保持在其他窗口之上 网上查了好久 我无法找到这个问题的满意答案 使用 Windows 7 和 Microsoft Outlook 2007 当提醒闪烁时 它不再提供模式框来吸引您的注意力 在工作中 安
  • DBAccess 创建自定义 DBAccessSettings

    我正在测试 DBAccess 以查看是否可以在项目中使用它 我在更改 sqlite 文件的位置时遇到问题 我希望它位于缓存目录中 这是我到目前为止在 AppDelegate m 中编写的代码的一部分 DBAccessSettings get
  • C++11 中的 3 条默认成员弃用规则

    根据下面广为人知的表格 当用户提供一个或多个复制赋值函数 复制构造函数和析构函数时 C 11 中不推荐自动编译器生成默认复制构造函数和复制赋值 红色单元格表示弃用 考虑到 三法则 这是完全有道理的 然而 该表显示 在用户提供的复制构造函数
  • 类型NotPresentExceptionProxy

    从 Surefire 2 6 升级到 Surefire 2 13 时 我得到TypeNotPresentExceptionProxy运行我的单元测试时 java lang ArrayStoreException sun reflect an
  • jQuery:无限fadeOut $fadeIn 效果?

    我想使用动画标签fadeOut and fadeIn影响 但该代码会冻结浏览器 如何解决这个问题 function animateLabels label orange font fadeOut 1000 function this fad
  • C# 中的标准正态分布 z 值函数

    我一直在看 Jeff Atwood 最近发表的博客文章替代排序顺序 https blog stackoverflow com 2009 10 alternate sorting orders 我尝试将帖子中的代码转换为 C 但遇到了问题 据
  • 有没有 jquery 插件可以在 HTML 页面中保留常见的页眉和页脚? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ReactJS:如何防止浏览器缓存静态文件?

    我正在使用 ReactJS 开发我的项目 并且使用create react app创建我的应用程序 构建项目后 我使用我的服务器来服务build文件夹 当我更新我的应用程序时 用户的浏览器仍然使用我的应用程序的旧版本 因为它缓存静态文件 j
  • SQLAlchemy 过滤 PostgreSQL JSONB 中的嵌套 JSON 数据

    我将嵌套 JSON 存储为 jsonb 但我不知道如何选择具有不确定值的嵌套 json e g facebook openid 123456789 access token 6EFD26B0A868E3BB387E78851E42943F
  • 尽管使用了备忘录并且没有更改任何道具,但在功能组件中反应重新渲染子项

    我有一个图标组件 它绘制一个图标 并且它正在闪烁 因为父级正在让它重新渲染 我不明白为什么会发生这种情况以及如何防止这种情况 这里有一份小吃 https snack expo io sharcoux children rerendering
  • 双问号('??')与 if 分配相同的变量时

    参考以下内容SE答案 https stackoverflow com a 446839 799379 写作时 A A B 它是一样的 if null A A A else A B 这是否意味着 if null A A B 会是首选 性能方面