对 ? 的行为感到困惑。操作员

2023-12-08

这是我的代码

class Address
{
    public bool IsAppartment { get; set; }
}

class Employee
{
    public string Name { get; set; }
    public Address Address { get; set; }
}    
class Program
{
    static void Main(string[] args)
    {
        Employee employee = new Employee()
        {
            Name = "Charlie"
        };
        if (employee.Address?.IsAppartment ?? true)
        {
            Console.WriteLine("Its an apartment");
        }
        else
        {
            Console.WriteLine("No employee address or not an apartment");
        }
    }
}

该程序的输出

这是一间公寓

根据定义?.操作员

if 条件成员或元素访问链中的一个操作 操作返回 null,链的其余部分不执行。

在这种情况下,Address 对象为空,我不明白为什么它不进入代码的 else 分支?

UPDATE
使用快捷运算符的等效代码是什么?

if (employee.Address != null && employee.Address.IsAppartment == true)
{
    Console.WriteLine("Its an apartment");
}
else
{
    Console.WriteLine("No employee address or not an apartment");
}

这是正确的,链的其余部分不执行,空合并运算符??回报true。根据MSDN

空合并运算符 ??返回其左侧的值 操作数(如果不为空);否则,它评估右手 操作数并返回其结果。

如果您想将结果与其中之一进行比较true or false(根据您的更新)您可以使用

if (employee?.Address?.IsAppartment == true)
{
}

左侧操作数返回Nullable<bool>,您还可以在MSDN

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

对 ? 的行为感到困惑。操作员 的相关文章

随机推荐

  • PHP 中的 GET URL 参数

    我试图在 php 中将 URL 作为 url 参数传递 但是当我尝试获取此参数时 我什么也没得到 我使用以下网址形式 http localhost dispatch php link www google com 我正在努力解决这个问题 G
  • 使用 JSTL XML taglib 时出错 - 属性 xml 不接受任何表达式

    当我尝试使用 JSTL XML 标记库时出现以下错误 server side transform jsp 51 0 According to TLD or attribute directive in tag file attribute
  • Java 中 ContainsAll 的成本是多少?

    我发现containsAll a List接口方法 在今天的一些编码中 它看起来非常光滑 有谁知道这在性能 迭代方面要花多少钱 The 文档在这方面没有提供太多 使用来源 卢克 编辑 正如博佐指出的 你问的是List containsAll
  • 在 ES6 中导入所有内容,但不在对象内部[重复]

    这个问题在这里已经有答案了 无论如何不写这个 import replace in mtstr tot width rationalize eval expression ascii to latex latex to ascii getIn
  • WIX(删除所有以前的版本)

    在 添加或删除程序 下我可以看到五个版本 ApplicationName v3 0 4 0 ApplicationName v3 0 4 18 ApplicationName v3 0 5 27 ApplicationName v3 0 5
  • Facebook iFrame 应用程序:如何从 URL 查询字符串传递数据

    我有一个带有图片库的 Facebook 应用程序 它是在 Flex 4 中构建的 我想允许用户链接到特定图像 那怎么办呢 我看到完成此操作的唯一方法是在 Facebook 页面 URL 中添加像 my picture asd jpg 这样的
  • 表排序器。按下拉选择排序

    我有一个简单的表 其中包含 ID 和姓名 名字 姓氏 字段 在表格上方有一个下拉列表 其中包含选项 ID 名字 姓氏 根据下拉表的选择进行排序 我不知道如何根据选择触发 tablesort 排序功能 也许这就是你想要的 demo HTML
  • 如何在nextjs中用两个url链接同一页面

    如果用户正在搜索特定城市 我想在页面名称之前的网址中显示城市名称 如果用户没有搜索特定城市 那么我想显示正常的网址 我们如何在 Next Js 中实现这一点 Ex http localhost 3000 Delhi furniture ht
  • 为什么在 Bash 中“false && true”不使用 set -e 退出? [复制]

    这个问题在这里已经有答案了 为什么第三个案例返回成功 退出代码为 0 case 1 bash c set e false true echo success echo success 0 case 2 bash c set e true f
  • 具有动态过滤器/搜索条件的 Ember 路线

    由于以下问题 我已经被困了好几天了 我的用例是我有一个包含数百万个地址的数据库 我想从网络应用程序中搜索它们 显示结果列表 然后显示有关单个地址的信息 一个重要的目标是将搜索条件表示为 URL 的一部分 这样用户就可以返回到以前的搜索 甚至
  • MSI:如何在 InstallValidate 期间卸载时停止服务 - 这仍然可以工作吗?

    我想知道 如果服务被标记为 具体如何以及何时尝试停止Remove uninstall Stop uninstall 在 WiX 项目文件中 我为什么要问 卸载时 重新启动管理器无法识别或正确处理该服务 从而导致 重新启动对话框 我将调试器附
  • Django 中的“正向外键”和“反向外键”是什么?

    当阅读与 Django 相关的主题时选择相关 and 预取相关 在一些网站上 包括堆栈溢出 我经常看到这样的词转发外键 and 反向外键但我在 Django 文档中找不到定义 models py from django db import
  • CodeIgniter 中允许 URL 中包含任何字符

    我正在使用 CodeIgniter PHP 框架 我使用JS动态加载PHP页面 someIFrame writeAttribute src index php controller method escape userGeneratedSt
  • jade 过滤器:带有 a 的对象的 markdown

    我有一个来自数据库的对象 其中包含一些我想用玉渲染的降价标记 但如何呢 当我应用 markdown 过滤器时 我不能再将对象用作对象 但它会被视为文本 我从这里开始 p markdown entry content 这呈现为普通 entry
  • node.js - 使用归档器归档文件夹生成一个空 zip

    我正在尝试使用以下方式存档文件夹archiver 我想要存档的文件夹的路径如下所示 Project app js tmp folderToArchive file1 txt file2 txt file3 txt 我的服务器端代码将生成 z
  • 在 Android 中读取 Zip 存档中的文件并将其内容放入字符串中

    这是我的第一个问题 尽管我已经使用了 Stack Overflow 上的很多技巧 但对于这种情况我还没有找到解决办法 情况是这样的 我有一个压缩文件 我想读取一个特定的文件并将其内容放入一个 String 变量中 该变量将被返回并放入 An
  • 用于检查属性是否存在的简写函数[重复]

    这个问题在这里已经有答案了 你们能帮我制作一个速记函数来确定对象属性是否存在吗 在 99 的情况下 我想用它来检查返回的 json 对象是否包含指定的属性 请注意 不保证必须定义任何父属性甚至 json 对象本身 我是这样想的 functi
  • 模型衍生 API 响应未通过 Jackson 映射

    是否对模型派生 API 的响应对象进行了更新 因为我们在将 3D 模型请求的响应映射回清单和元数据对象时遇到问题 两人都抛出了杰克逊的错误 GetManifest 返回未处理的角色枚举 GetMetadataForGuid 抛出 非法字符
  • 根据邮政编码确定 USPS 邮政区域的公式

    我希望能够更轻松地按 USPS 邮区对数百个信封进行分类 困难在于必须根据原始邮政编码对美国 8 个区域中的每一个区域进行手动排序 91352 http postcalc usps gov ZoneCharts 我有一个包含 ZIP 列的联
  • 对 ? 的行为感到困惑。操作员

    这是我的代码 class Address public bool IsAppartment get set class Employee public string Name get set public Address Address g