【问题标题】:Combining the coalescence more than once?多次合并合并?
【发布时间】:2011-02-02 02:01:38
【问题描述】:

在 C# 中是否有任何东西可以让你做一些事情,比如

string str = nullval1 ?? nullval2 ?? nullval3 ?? "Hi";

它会从左到右选择第一个不为空的?

如果该运算符不这样做,是否有可能的替代方法以最少的代码提供类似的功能?

【问题讨论】:

  • 那只需要一分钟就可以试用了..
  • @BrokenGlass:编码没有任何方法来构建 atm,所以我尝试检查我的语法,然后再做很多次。
  • 如果您发现自己在没有编译器的情况下进行编码,但仍然可以访问 Internet,请帮自己一个忙,试试ideone.com。例如,以下是 Jon Skeet 回答的示例代码:ideone.com/qOvPI
  • @Cody Gray:谢谢你的参考,我确实给它加了书签。

标签: c# null-coalescing-operator


【解决方案1】:

按原样工作绝对没问题。示例代码:

using System;

class Program
{
    static void Main(string[] args)
    {
        string x = null;
        string y = "y";
        string z = "z";

        Console.WriteLine(x ?? y ?? z); // Prints "y"
    }
}

【讨论】:

  • 真的吗?这很有趣,我从来没有在任何地方看到过这样的例子。
  • @Tommy:总是有你友好的邻居编译器! :D
  • @BoltClock: 没有任何方法来构建 atm 的编码,所以我试图在我这样做之前检查我的语法。
  • @Tommy,C# 语言规范的第 7.12 节讨论了 ?? 运算符的这种行为。它是右结合的,这样a ?? b ?? c 的计算结果为a ?? (b ?? c),因此首先计算a,然后计算正确的表达式b ?? c,计算结果为b。规范继续说“一般来说,形式为 E1 ?? E2 ?? ... ?? EN 的表达式返回非空操作数中的第一个,如果所有操作数都为空,则返回空”跨度>
猜你喜欢
  • 2021-08-16
  • 2020-02-18
  • 2018-05-26
  • 2012-08-02
  • 1970-01-01
  • 2016-04-22
  • 2018-11-17
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多