【问题标题】:c# operators '??' and 'as'c# 运算符 '??'并作为'
【发布时间】:2020-06-24 10:27:05
【问题描述】:

我看到了这段代码,但我不知道第二行中运算符的顺序。第二行的结果是什么?

Object obj = 1;

String s = obj as String ?? "";

【问题讨论】:

  • 空字符串,因为obj as String 的计算结果为null。顺便说一句,你试过运行它吗?
  • 你可以简单地编写这段代码并调试它
  • 理论上只有两种可能的顺序,其中一种没有任何意义。
  • 这个问题没有表现出任何努力。 “第二行的结果是什么?”有很多方法可以尝试这个。例如,在您的即时窗口中输入(object)1 as string ?? "" (Ctrl+Alt+I)

标签: c# operators


【解决方案1】:

C# operator precedence 表指出as(请参阅“关系和类型测试”行)运算符的优先级高于空合并运算符(??),因此您的表达式将导致空字符串,导致@987654324 @ 将评估为 null 因此空合并运算符将返回右手操作数,即 ""

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 2012-04-02
    • 2023-03-13
    • 1970-01-01
    • 2013-09-26
    • 2011-04-24
    • 2012-09-23
    • 2012-04-12
    相关资源
    最近更新 更多