问题标签 [null-conditional-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 投票
2 回答
1812 浏览

c# - C# 6.0 multiple identical null conditional operator checks vs single traditional check

Which out of the following two equivalent ways would be best for the null conditional operator in terms of primarily performance and then ease of use or clarity etc.?

This:

or (assuming that all local vars are null already) this:

Is performance even an issue?

0 投票
2 回答
3341 浏览

javascript - javascript忽略如果空运算符?

在javascript中,我有很多这样的代码。

这是令人讨厌的长。在其他语言中,您可以简单地做

有没有办法在javascript中做到这一点?

我试过了,

但这不是很可读。

0 投票
2 回答
1498 浏览

c# - C#空条件运算符替代(条件赋值)?

C# 空条件运算符允许有用的短路:

不幸的是,空条件运算符不能以相同的方式用于简写赋值,因为它返回一个值(不能用于左手赋值):

导致可能的替代语法:

如果编译器知道 RangedUnit 是引用类型(不是值类型),为什么不能有条件地执行速记语法

(即如果 refTypeInstance 为 null,则什么也不做。如果 refTypeInstance 不为 null,则执行该语句)

更新(结论):

  • 空条件运算符不能用于赋值语句的左侧,因为这会违反赋值语句表达式树的预期评估逻辑(使赋值操作短路并且根本不执行它)
  • 理想的解决方案是一个新的条件赋值运算符(仅在赋值的左侧不为空时执行),本质上是“如果不为空,则一个赋值一个衬里”
0 投票
5 回答
882 浏览

c# - 为什么 IEnumerable?.First() 不起作用?

当我尝试在可枚举对象上使用 ?.First() 时,当对象不包含任何项目时,它会引发错误“序列不包含元素”。

我认识到解决方案是使用 .FirstOrDefault(),但我不明白为什么我最初的努力不起作用。我是误解了什么还是只是“其中之一”?

0 投票
2 回答
1984 浏览

c# - 空条件运算符不适用于 Func在泛型方法内

这是编译器错误还是有特定选择的原因导致空条件运算符不适Func用于泛型方法内部?

举个例子,以下内容无法编译

编译器产生的错误是CS0023 Operator '?' cannot be applied to operand of type 'T'

我知道你可以做到这一点,但是:

那么为什么不允许呢?

然而,进一步详细说明Action<T>按预期工作。

更新(2017-01-17):

经过一些更多的研究,它变得更没有意义了,即使有以下几点:

假设我们有一个类(引用类型)

假设我们有一个Func<int>

以下作品:

这意味着根据那里应用的逻辑,使用and运算符Func<T>的值类型应该可以工作。null-conditionalnull-coalescing

但是,一旦左侧的泛型类型null-conditional是没有约束的泛型,那么它就不能应用它应该能够考虑的相同逻辑,当类型时,它可以将相同的逻辑应用于值类型引用类型被明确应用。

我知道编译器的限制,这对我来说没有意义,为什么它不允许它以及为什么它希望输出不同,无论它是参考类型还是值类型,考虑到手动应用类型会产生预期的结果.

0 投票
1 回答
1693 浏览

c# - Null conditional operator and void methods

Before C# 6, I would write code to dispose of an object like:

With 6, I can write much less code:

But are the two equivalent?

0 投票
2 回答
989 浏览

c# - LINQ:搜索字段可以为空的对象列表的多个字段

我正在尝试使用多字段搜索框过滤对象列表。它获取文本,然后将搜索应用于列表。但是,地址 2 和 3 可能是空白的(在这种情况下,在组成列表的对象中为 null),具体取决于提交的地址。

我有以下表达。

它目前抛出异常,因为它不能搜索空字段,这是非常正确的。

我怎样才能让它跳过或忽略空字段?可以在一个表达式中完成吗?

0 投票
1 回答
161 浏览

c# - 弱引用和空条件运算符的奇怪 C# GC 行为

在为我的 C# 代码创建一个单元测试时WeakReferences,我遇到了一些奇怪的 GC 行为 - 很奇怪,因为我无法对此做出解释。

问题源于在 GC 旨在收集它之后从我的弱引用中获取的对象上使用?. null 条件运算符。

这是复制它的最小代码:

使用 linqpad 运行此代码时未显示该行为。我还检查了编译的 IL 代码(使用 linqpad),但仍然无法识别出任何问题。

0 投票
4 回答
542 浏览

c# - 空条件运算符

var a = b?.cd;

这个表达式不应该总是给出编译错误吗?如果 b 为 null,则传播 null 值,因此 c 也将为 null,因此也需要此运算符。据我了解,在表达式中使用此运算符会像病毒一样传播。

但是 Visual Studio 2015 和 Resharper 都没有对我说什么,我在这里错过了什么吗?

0 投票
4 回答
4380 浏览

c# - if 语句中的空条件布尔值

我有一个event返回一个boolean. 为了确保仅在有人在听时触发事件,我使用空条件运算符(问号)调用它。但是,这意味着我还必须将空条件运算符添加到返回的布尔值中。这意味着我无法弄清楚如何在之后的 if 语句中使用它。有谁知道如何处理这个?