问题标签 [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 回答
660 浏览

c# - 方法参数内的 C# Null 条件运算符

我有以下方法:

我考虑这种情况:

我将我的条件重构为:

这两个条件是等价的吗?以传统方式与第一个 NullConditionOperator 等效的条件是什么?使用 NullConditionalOperator 进行第二次传统检查的等效条件是什么?

0 投票
2 回答
1121 浏览

c# - UnassignedReferenceException 即使使用空条件运算符

UnassignedReferenceException: The variable _Preset of Foo has not been assigned.即使我使用的是空条件运算符 ,我也得到了一个?.

我的代码:

我也注意到它提到_Preset而不是Preset(我觉得很奇怪)。

中的代码Foo.cs

我究竟做错了什么?这不就是运营商的目的吗?

谷歌搜索没有帮助。

0 投票
2 回答
153 浏览

c# - 为什么空条件运算符会更改常规属性访问?

我对空条件运算符如何与普通属性访问级联感到困惑。举两个例子:

我希望它们是等效的:首先,a?.b评估 的值,然后result.c评估。因此,如果a == null,应该抛出异常。

但是,这只发生在第二个表达式中。第一个表达式的计算结果为null,这意味着它与 相同a?.b?.c为什么?

0 投票
4 回答
335 浏览

c# - 空条件运算符与委托和常规对象的功能相同吗?

参考

我目前正在处理一些线程敏感代码。

在我的代码中,我有一个由两个不同线程操作的对象列表。一个线程可以将对象添加到该列表中,而另一个线程可以将其设置为空。

在上面的参考资料中,它特别提到了代表:

相当于:

我的问题是,这种行为与说 a是否相同List<>?例如:

是:

保证相当于:

?


编辑:

请注意,(委托的工作方式)之间存在差异:

0 投票
3 回答
306 浏览

c# - Null 条件和 ToString 一起给出了意想不到的结果

我有 2 个语句使用 null 条件 (?) 运算符并对结果执行 ToString。这两个语句似乎应该具有相同的结果,但事实并非如此。唯一不同的是一个包含括号,另一个不包含括号。

我希望这两个陈述的评估结果相同。

但是,它们不会:

(someClass?.StatusCode).ToString()等于string.Empty

并且someClass?.StatusCode.ToString()等于null

0 投票
2 回答
277 浏览

c# - 空条件运算符应该使用到什么时候??.ToString()?.Trim() 等

我误解了一些空条件运算符?。机制

获取字符串变量长度的示例

?.我们是否应该在需要测试的对象成员的所有级联属性中使用运算符?
变量对象为空,因此使用空条件运算符进行测试应仅用于方法或?ToString()的级联成员ToString()

这个

或者

我虽然如果ToString为空,则不需要在它之后测试下一个成员。

0 投票
1 回答
100 浏览

c# - 读取 XML 时在 LINQ 中正确使用空条件运算符

我有以下使用 XML 序列化程序解析的 XML 文件。

我正在构建一个变量字典 - 名称-值对。我编写了以下 LINQ 语句,它工作正常(假设我在全局和项目范围内没有重复的变量名):

现在我有一个转折 - 有时整个<Global>标签都会丢失,或者它不会有<Variables>标签。同样,有时<Variables>标签中会缺少<Project>标签。例如:XML 文件将是:

我认为?.如下使用运算符(空条件)会有所帮助,但是当<Global>标签丢失时,以下 LINQ 语句会返回nullvarDictis null):

我做错了什么或解决方案是什么?

0 投票
3 回答
2719 浏览

powershell - Powershell中的空条件?

C#和其他语言通常有空条件?.

当 A 或 B 为空时不会出错。如何在 powershell 中实现类似的功能,更好的方法是:

0 投票
3 回答
311 浏览

c# - 有没有像事件..按钮这样的空条件运算符?.单击 +=(ss,ee)

为什么事件没有空条件运算符?

例如,如果对象不为空,我有以下代码引发事件:

简要地 :

有其他选择吗?比平时使用if(TargetButton != null ) ... raise event

为什么事件没有空条件运算符。它接受 null 吗? http://prntscr.com/pv1inc

0 投票
0 回答
192 浏览

c# - 对象/方法链方法调用中的 C# 竞争条件和空条件运算符

我知道这是在各种情况下提出的,但我没有找到这个确切的问题或令人满意的答案,抱歉,如果我不够谨慎的话。

症状:

当有嵌套对象时,就像Class A引用Class BClass C一个函数一样MyCall(),我必须调用这个函数,但我不能确定是否有任何类被释放或为空,我通常使用Null-Conditional Operaton作为简化称呼:

这通常工作得很好,但在极少数情况下,运行会以NullReferenceException.

例如,当ClientSession?.WebsocketConnection?.SocketConnection?.Disconnect()在代码中的某处调用以断开客户端套接字时,就会发生这种情况,但是当此调用异步运行时,客户端远程断开连接,例如SocketConnection类被释放。

所以竞争条件会导致一种情况,当 null 检查实际上可以到达最后的函数调用时,但是当执行发生时,链中的任何对象都变为 null,因此该方法无法执行,因此导致NullReferenceException.

问题:

避免这种情况的正确方法应该是什么?不使用try/catch,因为这是一个性能敏感的应用程序,而且关于我的基准测试,捕获这样的错误有点昂贵。

如果任何对象为空,是否有任何适当的方法可以取消执行?

感谢您的帮助。