从左到右表达式求值

2023-12-29

在 C# 中,是否保证表达式从左到右计算?

例如:

myClass = GetClass();  
if (myClass == null || myClass.Property > 0)  
    continue;

是否存在不符合规定的语言?


您实际上指的是一种称为“短路逻辑表达式”的语言功能:

这意味着:当逻辑表达式的结果不能再改变时,例如当很明显表达式无论如何都会计算为“true”或“false”时,表达式的其余部分将不会被计算。

例如,C#、Java 或 JavaScript 可以做到这一点,您可以在这些语言中依赖它(来回答您的问题)。

在您的情况下,如果 MyClass 不为空:

  • MyClass == null评估结果为假
  • 由于它是一个“或”表达式,第二部分仍然可以改变结果,所以它被评估
  • myClass.Property > 0决定了最终的结果

如果 MyClass 为空:

  • MyClass == null评估结果为真
  • 因为它是一个“或”表达式,所以后面的内容并不重要
  • 不再进行评估,最终结果为真

有些语言不会短路逻辑表达式。经典 VB 就是一个例子,如果 MyClass 为 null(在 VB 中称为“Nothing”),则“myClass.Property > 0”将被评估并产生错误。

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

从左到右表达式求值 的相关文章

随机推荐

  • 如何将数字格式化为 xxx-xx-xxxx?

    我正在从存储过程中查询社会安全号码数据 我想在存储过程中将其格式化为社会安全号码 如何在 Oracle 中将 xxxxxxxxx 格式化为 xxx xx xxxx 使用 TO CHAR 格式化 SSN SELECT TO CHAR 0123
  • 在 MSTest 中如何检查最后一个测试是否通过(在 TestCleanup 中)

    我正在使用 MSTest 在 Selenium 中创建 Web 测试 并且希望每次测试失败时都截取屏幕截图 但我不想每次测试通过时都截取屏幕截图 我想做的是将屏幕截图功能放入 TestCleanup 方法并在测试失败时运行它 但如果测试通过
  • Play 框架与 Scala 和 PostgreSQL 的最佳数据访问选项是什么?

    我们有早期的经验和大量可重用的代码 组件 大部分是使用 Spring MVC Hibernate PostgreSQL 数据库完成的 但最近我们计划启动一个新项目 我们决定将 Play 框架与 Scala 一起使用 我们是 Scala Pl
  • Orient-db 正则表达式修饰符

    我正在使用 orient db 数据库 并且遇到正则表达式模式匹配问题 我确实需要在请求中存在不区分大小写的修饰符 但不知何故它无法按我的预期工作 Query select from UserAccounts where email MAT
  • vscode 无法打开弧度(Linux、Manjaro)

    打开 R 脚本并单击Run Source然后我得到 The terminal process home xxx miniconda3 bin radiant failed to launch exit code 1 以及终端窗口中的按摩 T
  • 动态方法名称(Objective-C)

    我有几种方法 如下所示 void methodA void methodB void methodC 它们的使用取决于某些条件 现在我想动态使用它们 我尝试了以下方法 NSString methodName if flag A method
  • 异常:android.view.InflateException:二进制 XML 文件行 #20:膨胀类 net.simonvt.datepicker.DatePicker 时出错

    我正在开发我正在使用的 Android 应用程序simonvtdatepicker 库因为向后兼容 但我在开发者控制台崩溃报告中看到有 3 个关于此相同错误的报告 但我在正在运行的设备中尝试过 所以这真的很奇怪 请支持这个为什么它如此奇怪并
  • 分发管理到期?

    目前我的 Distribution Managed 已过期 现在我的问题是我是否需要撤销它然后创建一个新的 我有点困惑 因为我在创建新证书下找不到该特定证书 那么我需要用它做什么呢 我已经创建了一个新的分发证书 但对分销管理的了解又如何呢
  • 如何将项目与弹性容器的开始和居中对齐? [复制]

    这个问题在这里已经有答案了 I have this plunker http plnkr co edit gZHmQJa4OlEJTksjLHYm p preview this plunker http plnkr co edit JFRN
  • 导入错误:没有名为 mako.template 的模块

    我的 foobar py 文件中的这行代码 from mako template import 结果是 导入错误 没有名为 mako template 的模块 我怎样才能解决这个问题 两个都help modules and repr mak
  • 如何在 BigQuery 标准 SQL 中获取数组的切片?

    在 BigQuery 中 我有一个表 其中包含path像这样的列 ID Path 1 foo bar baz 2 foo bar quux blat 我希望能够在正斜杠上分割路径 并选择一个或多个路径部分 然后重新连接它们 在 Postgr
  • Echo与Echo的区别[特殊字符]

    编写批处理文件时 我发现有些人使用Echo Echo Echo 等等 这些回显空行 那么这些之间有什么区别Echo Special Character 您可以使用许多不同的字符echo 之一 但对于一个人来说有很多要求good choice
  • React-Native 中的倒计时器

    我想在反应原生中加载屏幕时从 3 倒计时到 1 我用 setTimeOut 尝试过 但没有成功 我在这里做错了什么 我怎样才能实现这个目标 当屏幕加载时 我想以 1 秒的间隔显示 3 gt 2 gt 1 这是我的代码 constructor
  • 创建 SAML 断言并签署响应

    我有一个 Java Web 应用程序 我想为我的应用程序实现 SAML 单点登录 我有这个GitHub onelogin 程序 https github com onelogin java saml发送请求并获取响应 但它无法正常工作 我在
  • 如何使 IEnumerable 只读?

    为什么是列表list1Instance and p in the Main下面的代码的方法指向同一个集合 class Person public string FirstName string Empty public string Las
  • 将列添加到稀疏矩阵

    当我执行以下代码时 我得到一个稀疏矩阵 import numpy as np from scipy sparse import csr matrix row np array 0 0 1 2 2 2 col np array 0 2 2 0
  • 实体框架是否与 SQL Server 绑定?

    如果我想连接到 Oracle MySQL 甚至 MS Access 怎么办 不 它使用 ADO Net 提供程序 模型插入数据库提供程序以提供对任何第三方数据库的访问 可用列表第三方 EF 提供商在这里 http msdn microsof
  • 进入前台时的 UIRefreshControl 错误

    当我使用时我注意到一个小错误 但真的很烦人 UIRefreshControl在我的视图控制器中 当应用程序从后台返回时UIRefreshControl已经加载 看起来像这样 正如你所看到的 我使用了一个自定义导航控制器 它像 Faceboo
  • 为什么 Google 云端硬盘返回“无法解析内容范围标头。”?

    这是我的简单代码 用于恢复 可能 中断的 Google Drive 上传 Using message New ByteArrayContent New Byte message Headers ContentRange New Header
  • 从左到右表达式求值

    在 C 中 是否保证表达式从左到右计算 例如 myClass GetClass if myClass null myClass Property gt 0 continue 是否存在不符合规定的语言 您实际上指的是一种称为 短路逻辑表达式