问题标签 [null-coalescing-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6545 浏览

c# - 是否有与 C# 中的空合并运算符 (??) 等效的 Perl?

我开始真正喜欢C#了??操作员。而且我已经习惯了这样一个事实,即在某些语言中有一些方便的地方,它很可能也在 Perl 中。

但是,我找不到??Perl 中的等价物。有没有?

0 投票
4 回答
13074 浏览

c# - 如何将空列表视为 linq 中的空列表?

下面是一些 linqpad 测试代码。当它运行时会出错,因为“item”的第二个实例有一个空的子项目列表,而不是一个空列表。

我想以完全相同的方式处理这两种情况(空列表或空列表),但我想知道是否有比仅在列表上进行空检查并在有空时初始化空列表更简洁的方法。

换句话说,我可以这样做:

但这有点难看,我想知道如何改进?

作为一个额外的问题,这个相同的 linq 查询可以表示为 lambda 并以相同的方式处理空值吗?

干杯,克里斯

0 投票
2 回答
1754 浏览

c# - 常见的 c# 习语,包括 coalesce ?? 操作员

每个人都知道至少两个常见的 C# 习惯用法,包括合并运算符:

单身人士:

和一个链:

它在代码中可读、一致、值得使用和可识别。

但是,不幸的是,仅此而已。有时它需要扩展或改变。有时我会在看到特定案例时使用它们——而且我总是犹豫使用它,因为我不知道是否有任何其他程序员会真正轻松地阅读它。

你认识其他人吗?我希望有更具体的用法:例如 Asp.net、EF、LINQ,任何东西——其中的合并不仅是可以接受的,而且是显着的。

0 投票
11 回答
80898 浏览

c# - ?? 合并空字符串?

我发现自己做的越来越多的事情是检查字符串是否为空(如 in""或 null)和条件运算符。

当前的示例:

这只是一个扩展方法,相当于:

因为它是空的而不是空的,??所以不会成功。一个string.IsNullOrEmpty()版本??将是完美的解决方案。我认为必须有一种更清洁的方式来做到这一点(我希望!),但我一直不知所措。

有没有人知道更好的方法来做到这一点,即使它只在.Net 4.0 中?

0 投票
5 回答
540 浏览

c# - 您如何看待 C# 中的 ??= 运算符?

你认为 C# 会支持 ??= 运算符吗?

而不是这个:

或许可以写成:

现在,我可以使用(但在我看来不太可读):

0 投票
7 回答
3098 浏览

c# - C# 中的空合并运算符和运算符 &&

在下一种情况下,是否可以以任何方式一起使用运算符??和运算符:&&

这意味着接下来:

  • 如果any为空则this.Any.HasValue返回false
  • 如果any有值,则返回值考虑另一个布尔属性,即Any && SomeBool
0 投票
8 回答
2717 浏览

c# - 否定空合并运算符

我有一堆需要使用 .Trim() 的字符串,但它们可以为空。如果我可以做类似的事情会更简洁:

如果左边的部分不为空,则基本上返回右边的部分,否则只返回空值。我刚刚结束了使用三元运算符,但是有没有为此目的使用空合并运算符?

0 投票
12 回答
18929 浏览

c# - 空合并运算符是否有“对立面”?(……任何语言?)

空合并大致转换为return x, unless it is null, in which case return y

我经常需要return null if x is null, otherwise return x.y

我可以用return x == null ? null : x.y;

不错,但null中间的那个总是困扰我——这似乎是多余的。我更喜欢类似的东西return x :: x.y;::只有在它之前的东西不是时才会评估后面的东西null

我认为这与空合并几乎相反,有点混合了简洁的内联空检查,但我 [几乎] 确定 C# 中没有这样的运算符。

有没有其他语言有这样的运算符?如果是这样,它叫什么?

(我知道我可以在 C# 中为它编写一个方法;我使用return NullOrValue.of(x, () => x.y);,但如果你有更好的方法,我也想看看。)

0 投票
2 回答
4081 浏览

dictionary - 如何使用键索引将项目分配/添加到字典?

我们想使用键索引将项目分配/添加到字典,如下所示:

但它会导致:“给定的键不在字典中。

有什么方法可以像我为会话分配值的方式一样,使用空合并为该字典分配值:

谢谢

编辑:我实际上试图从字典的子类中覆盖索引器,但无济于事。实现 IDictionary 接口似乎太多了,因为我们只需要下面代码的功能(即,如果未找到键,则返回 null)。所以我想,也许我们可以使用如下扩展:

但它不工作甚至编译。

还有其他更简单的方法可以重用这个索引器功能吗?非常感谢。

0 投票
2 回答
3881 浏览

c# - 空合并运算符和 lambda 表达式

看看我尝试在构造函数中编写的以下代码:

该代码无法编译 - 只是“无效的表达式术语”等等。

相比之下,它确实可以编译,我可以使用它:

但是,我仍然想知道为什么不允许使用这种语法。

有任何想法吗?