问题标签 [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.
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?
c# - 为什么 Visual Studio 没有就空引用异常向我发出警告?
我想知道为什么 Visual Studio 2019 不抱怨这段 C# 代码:
既然deserializedBody?.date
可能null
,那就意味着该ToString
方法将应用于某事null
。我认为是这样的:
将是正确的使用形式,但 Visual Studio 不会抱怨第一个版本。当然,我错过了关于这段代码的真实性质的一些东西。
c# - 关于 Null 条件的一个奇怪问题?
env:VS2017 v15.9.24,.net framework 2.0 c# 控制台项目。
这是一个非常简单的控制台项目,没有任何参考,所有代码都在program.cs中:
javascript - 是否有用于数组连接的空条件运算符?
产出[act1, null]
而不是预期[act1]
。我是在滥用空条件运算符还是
获得我想要的东西的最好/最简单的方法?
c# - 为什么属性赋值不允许使用空条件运算符?
我刚刚注意到属性赋值不允许与空条件运算符结合使用。有了方法,这根本不是问题。
我一直认为属性只是setter 方法的语法糖。
那么为什么一个允许而另一个不允许呢?
我很确定有一个很好的理论理由。怀着变得更聪明的小希望,我只是想知道为什么:)
PS - 我在 TypeScript 中注意到了同样的行为。
c# - 以对象不为空为条件设置对象的属性
这有效,仅当成员不为空时才调用 Invoke:
有条件地调用属性设置器不起作用:
相反,必须包括显式空检查:
我认为对于二传手来说这很有意义,因为它本质上是语法糖:
是否有以对象不为空为条件设置对象属性的内联语法?
powershell-core - PowerShell 中的空条件运算符有什么意义?
PowerShell 7 最近将Null-conditional ( ?.
) 运算符移出实验阶段。在玩弄它并阅读上面链接中的示例时,我想我理解它是如何工作的。在下面的示例中,provided$a
不是 null 并且有一个名为PropName
它的属性,它将返回值,$a.PropName
否则返回 null。:
但是,我不明白为什么我会使用新的空条件运算符而不是使用点 ( .
) 访问对象属性。下面的示例以两种方式呈现相同的内容,并且不会抛出或显式抑制任何错误:
点
空条件(注意细微的变化)
所以,我知道什么时候应该使用它,但是 PowerShell 已经有了一个语法更简单的解决方案。说白了,这个算子的意义何在?除了上面链接的内容之外,我找不到关于该运算符的太多文档,并且我假设一定有我遗漏的东西。数组 ( ) 有一个类似的运算符,?[]
可以有条件地返回数组元素,如果索引超出范围,则返回 $null,但同样,$null
如果您超出数组范围并尝试访问属性,PowerShell 已经返回且没有错误。
c# - if 语句中的 C# 6.0 空条件运算符
有人可以解释一下 if 语句中空条件运算符的逻辑吗?
想象下面的代码
以上将打印OK。为什么下一个块不会编译时它会编译?
我猜?。当检测到 null 并跳过整个 if 时将停止执行,但为什么“?.Any()”不是这种情况?仅仅因为它是一种方法,而“count”是一个属性?
为什么 Linq 扩展方法 Any() 需要从 Nullable 到 bool 的显式转换,其中 Count() == 0 编译时不需要 Nullable 到 int 的转换?
c# - 为什么在变量不能为空时使用空条件运算符?
我从MSDN看到了以下代码:
我不明白为什么它需要使用_bar?.Dispose();
而不是_bar.Dispose();
?
_bar
已经readonly
在构造函数中声明并初始化了,所以_bar
不会为null,也不能重新赋值给null
,那为什么还要对null做检查_bar
呢?
c# - 三元条件下的 C# Null 条件
我正在重构一些旧代码并查看以下格式的内容:
如果 rec["IsFlagged"] 为空,这将不起作用,在这种情况下,我需要返回空。如果可能的话,如何重构以将代码保留在一行中?
我可以做类似的事情,但我想知道是否可以在一行中实现以下对代码的最小更改
谢谢,