问题标签 [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 投票
1 回答
74 浏览

c# - Why does the null-conditional operator promote thread-safety in C#?

There's a modern idiom in C# that utilizes the null-conditional operator to promote thread-safety when using delegates. Namely:

Why does this work? Does the C# specification guarantee atomicity in the operation? Does the null-conditional operator make an underlying copy of its operand before executing the Invoke() method?

0 投票
1 回答
335 浏览

c# - 为什么 Visual Studio 没有就空引用异常向我发出警告?

我想知道为什么 Visual Studio 2019 不抱怨这段 C# 代码:

既然deserializedBody?.date可能null,那就意味着该ToString方法将应用于某事null。我认为是这样的:

将是正确的使用形式,但 Visual Studio 不会抱怨第一个版本。当然,我错过了关于这段代码的真实性质的一些东西。

0 投票
1 回答
104 浏览

c# - 关于 Null 条件的一个奇怪问题?

env:VS2017 v15.9.24,.net framework 2.0 c# 控制台项目。

这是一个非常简单的控制台项目,没有任何参考,所有代码都在program.cs中:

0 投票
2 回答
34 浏览

javascript - 是否有用于数组连接的空条件运算符?

产出[act1, null]而不是预期[act1]。我是在滥用空条件运算符还是

获得我想要的东西的最好/最简单的方法?

0 投票
1 回答
112 浏览

c# - 为什么属性赋值不允许使用空条件运算符?

我刚刚注意到属性赋值不允许与空条件运算符结合使用。有了方法,这根本不是问题。

我一直认为属性只是setter 方法的语法糖

那么为什么一个允许而另一个不允许呢?

我很确定有一个很好的理论理由。怀着变得更聪明的小希望,我只是想知道为什么:)

PS - 我在 TypeScript 中注意到了同样的行为。

0 投票
0 回答
61 浏览

c# - 以对象不为空为条件设置对象的属性

这有效,仅当成员不为空时才调用 Invoke:

有条件地调用属性设置器不起作用:

相反,必须包括显式空检查:

我认为对于二传手来说这很有意义,因为它本质上是语法糖:

是否有以对象不为空为条件设置对象属性的内联语法?

0 投票
1 回答
39 浏览

powershell-core - PowerShell 中的空条件运算符有什么意义?

PowerShell 7 最近将Null-conditional ( ?.) 运算符移出实验阶段。在玩弄它并阅读上面链接中的示例时,我想我理解它是如何工作的。在下面的示例中,provided$a不是 null 并且有一个名为PropName它的属性,它将返回值,$a.PropName否则返回 null。:

但是,我不明白为什么我会使用新的空条件运算符而不是使用点 ( .) 访问对象属性。下面的示例以两种方式呈现相同的内容,并且不会抛出或显式抑制任何错误:

空条件(注意细微的变化)

所以,我知道什么时候应该使用它,但是 PowerShell 已经有了一个语法更简单的解决方案。说白了,这个算子的意义何在?除了上面链接的内容之外,我找不到关于该运算符的太多文档,并且我假设一定有我遗漏的东西。数组 ( ) 有一个类似的运算符,?[]可以有条件地返回数组元素,如果索引超出范围,则返回 $null,但同样,$null如果您超出数组范围并尝试访问属性,PowerShell 已经返回且没有错误。

0 投票
2 回答
132 浏览

c# - if 语句中的 C# 6.0 空条件运算符

有人可以解释一下 if 语句中空条件运算符的逻辑吗?

想象下面的代码

以上将打印OK。为什么下一个块不会编译时它会编译?

我猜?。当检测到 null 并跳过整个 if 时将停止执行,但为什么“?.Any()”不是这种情况?仅仅因为它是一种方法,而“count”是一个属性?

为什么 Linq 扩展方法 Any() 需要从 Nullable 到 bool 的显式转换,其中 Count() == 0 编译时不需要 Nullable 到 int 的转换?

0 投票
2 回答
49 浏览

c# - 为什么在变量不能为空时使用空条件运算符?

我从MSDN看到了以下代码:

我不明白为什么它需要使用_bar?.Dispose();而不是_bar.Dispose();

_bar已经readonly在构造函数中声明并初始化了,所以_bar不会为null,也不能重新赋值给null,那为什么还要对null做检查_bar呢?

0 投票
2 回答
253 浏览

c# - 三元条件下的 C# Null 条件

我正在重构一些旧代码并查看以下格式的内容:

如果 rec["IsFlagged"] 为空,这将不起作用,在这种情况下,我需要返回空。如果可能的话,如何重构以将代码保留在一行中?

我可以做类似的事情,但我想知道是否可以在一行中实现以下对代码的最小更改

谢谢,